In deze zelfstudie leert u met behulp van voorbeelden over dit trefwoord van JavaScript.
In JavaScript thisverwijst trefwoord naar het object waar het wordt aangeroepen.
1. deze Inside Global Scope
Wanneer thisalleen wordt gebruikt, thisverwijst naar het globale object ( windowobject in browsers). Bijvoorbeeld,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Hier this.nameis hetzelfde als window.name.
2. deze Inside-functie
Wanneer thiswordt gebruikt in een functie, thisverwijst naar het globale object ( windowobject in browsers). Bijvoorbeeld,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. deze Inside Constructor-functie
In JavaScript worden constructorfuncties gebruikt om objecten te maken. Wanneer een functie wordt gebruikt als een constructorfunctie, thisverwijst dit naar het object waarin deze wordt gebruikt. Bijvoorbeeld,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Uitvoer
Persoon (naam: "Jack") Jack
Hier thisverwijst naar de person1 object. Daarom, person1.namegeeft Jack ons.
Opmerking : wanneer thiswordt gebruikt met ES6-klassen, verwijst het naar het object waarin het wordt gebruikt (vergelijkbaar met constructorfuncties).
4. deze Inside Object-methode
Wanneer thiswordt gebruikt in de methode van een object, thisverwijst naar het object waarin het zich bevindt. Bijvoorbeeld,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.name); ) ) person.greet();
Uitvoer
(naam: "Jack", leeftijd: 25, begroet: ƒ) Jack
thisVerwijst in het bovenstaande voorbeeld naar het personobject.
5. deze innerlijke innerlijke functie
Wanneer u toegang krijgt tot thiseen innerlijke functie (binnen een methode), thisverwijst dit naar het globale object. Bijvoorbeeld,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); // (name: "Jack", age… ) console.log(this.age); // 25 // inner function function innerFunc() ( // this refers to the global object console.log(this); // Window (… ) console.log(this.age); // undefined ) innerFunc(); ) ) person.greet();
Uitvoer
(naam: "Jack", leeftijd: 25, groet: ƒ) 25 Venster (…) niet gedefinieerd
Hier verwijst thisinside innerFunc()naar het globale object omdat het innerFunc()zich in een methode bevindt.
Echter this.agebuiten innerFunc()verwijst naar het personobject.
6. deze Inside Arrow-functie
Binnen de pijlfunctie thisverwijst naar het bovenliggende bereik. Bijvoorbeeld,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Pijlfuncties hebben hun eigen functies this. Wanneer u thisbinnen een pijlfunctie gebruikt, thisverwijst dit naar het bovenliggende scope-object. Bijvoorbeeld,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Hier verwijst this.namede hi()functie naar het greetobject.
U kunt ook de pijlfunctie gebruiken om het probleem op te lossen undefinedwanneer u een functie binnen een methode gebruikt (zoals te zien is in Voorbeeld 5). Bijvoorbeeld,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.age); // inner function let innerFunc = () => ( // this refers to the global object console.log(this); console.log(this.age); ) innerFunc(); ) ) person.greet();
Uitvoer
(naam: "Jack", leeftijd: 25, begroet: ƒ) 25 (naam: "Jack", leeftijd: 25, begroet: ƒ) 25
Hier innerFunc()wordt gedefinieerd met behulp van de pijlfunctie. Het ontleent thiszijn bovenliggende reikwijdte. Daarom this.agegeeft 25 .
Wanneer de pijlfunctie wordt gebruikt met this, verwijst dit naar de buitenste scope.
7. deze interne functie met strikte modus
Wanneer thiswordt gebruikt in een functie met strikte modus, thisis undefined. Bijvoorbeeld,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Opmerking : als u thisbinnen een functie met strikte modus gebruikt, kunt u JavaScript Function call () gebruiken.
Bijvoorbeeld,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Wanneer u slaagt thisvoor de call()functie, greet()wordt deze behandeld als de methode van het thisobject (in dit geval globaal object).








