In deze zelfstudie leert u met behulp van voorbeelden over dit trefwoord van JavaScript.
In JavaScript this
verwijst trefwoord naar het object waar het wordt aangeroepen.
1. deze Inside Global Scope
Wanneer this
alleen wordt gebruikt, this
verwijst naar het globale object ( window
object in browsers). Bijvoorbeeld,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Hier this.name
is hetzelfde als window.name
.
2. deze Inside-functie
Wanneer this
wordt gebruikt in een functie, this
verwijst naar het globale object ( window
object 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, this
verwijst 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 this
verwijst naar de person1 object. Daarom, person1.name
geeft Jack ons.
Opmerking : wanneer this
wordt gebruikt met ES6-klassen, verwijst het naar het object waarin het wordt gebruikt (vergelijkbaar met constructorfuncties).
4. deze Inside Object-methode
Wanneer this
wordt gebruikt in de methode van een object, this
verwijst 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
this
Verwijst in het bovenstaande voorbeeld naar het person
object.
5. deze innerlijke innerlijke functie
Wanneer u toegang krijgt tot this
een innerlijke functie (binnen een methode), this
verwijst 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 this
inside innerFunc()
naar het globale object omdat het innerFunc()
zich in een methode bevindt.
Echter this.age
buiten innerFunc()
verwijst naar het person
object.
6. deze Inside Arrow-functie
Binnen de pijlfunctie this
verwijst naar het bovenliggende bereik. Bijvoorbeeld,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Pijlfuncties hebben hun eigen functies this
. Wanneer u this
binnen een pijlfunctie gebruikt, this
verwijst 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.name
de hi()
functie naar het greet
object.
U kunt ook de pijlfunctie gebruiken om het probleem op te lossen undefined
wanneer 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 this
zijn bovenliggende reikwijdte. Daarom this.age
geeft 25 .
Wanneer de pijlfunctie wordt gebruikt met this
, verwijst dit naar de buitenste scope.
7. deze interne functie met strikte modus
Wanneer this
wordt gebruikt in een functie met strikte modus, this
is undefined
. Bijvoorbeeld,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Opmerking : als u this
binnen 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 this
voor de call()
functie, greet()
wordt deze behandeld als de methode van het this
object (in dit geval globaal object).