Ebben az útmutatóban példák segítségével megismerheti a JavaScript kulcsszavát.
A JavaScript-ben a this
kulcsszó arra az objektumra utal, ahol hívják.
1. ez az Inside Global Scope
Ha this
önmagában használjuk, akkor this
a globális objektumra ( window
a böngészőkben található objektum) utal . Például,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Itt this.name
ugyanaz, mint window.name
.
2. ez az Inside Function
Ha this
egy függvényben használjuk, akkor this
a globális objektumra ( window
a böngészőkben található objektum) utal . Például,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. ez az Inside Constructor funkció
A JavaScript-ben konstruktor függvényeket használnak objektumok létrehozására. Ha egy függvényt konstruktorként használunk, akkor this
arra az objektumra utalunk, amelyen belül használjuk. Például,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Kimenet
Személy (név: "Jack") Jack
Itt this
a person1 objektumra utal. Ezért person1.name
ad nekünk Jacket.
Megjegyzés : this
ES6 osztályokkal együtt használva arra az objektumra utal, amelyen belül használják (hasonlóan a konstruktor funkcióihoz).
4. ez az Inside Object módszer
Amikor this
egy objektum metódusán belül használják, this
arra az objektumra utal, amelyben benne van. Például,
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();
Kimenet
(név: "Jack", életkor: 25, üdvözlet: ƒ) Jack
A fenti példában this
az person
objektumra utal .
5. ez a Belső Belső Funkció
Amikor belép this
egy belső függvénybe (egy módszer belsejébe), akkor this
a globális objektumra utal. Például,
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();
Kimenet
(név: "Jack", életkor: 25, üdvözlet: ƒ) 25 Ablak (…) nincs meghatározva
Itt a this
belső innerFunc()
a globális objektumra utal, mivel innerFunc()
egy módszerben van.
Azonban this.age
kívül innerFunc()
utal az person
objektumra.
6. ez a Belső nyíl funkció
A nyíl függvényben this
a szülő hatókörére utal. Például,
const greet = () => ( console.log(this); ) greet(); // Window (… )
A nyílfüggvényeknek nincs sajátjuk this
. Amikor this
egy nyíl függvényt használ this
, a szülő hatókör objektumára utal. Például,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Itt this.name
belül a hi()
függvény utal az greet
objektumra.
A nyílfüggvény segítségével megoldhatja azt a problémát is, undefined
hogy egy függvényt egy metóduson belül használjon (ahogy az 5. példában látható). Például,
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();
Kimenet
(név: "Jack", életkor: 25, üdvözlet: ƒ) 25 (név: "Jack", életkor: 25, üdvözlet: ƒ) 25
Itt innerFunc()
a nyíl függvény segítségével definiálható. this
Szülői köréből veszi . Ezért 25-ötthis.age
ad .
Ha a nyíl függvényt használjuk this
, akkor az a külső hatókörre vonatkozik.
7. ez a Belső funkció szigorú üzemmóddal
Ha this
szigorú üzemmódú funkcióban használják, this
akkor undefined
. Például,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Megjegyzés : Ha this
szigorú módú funkciót használ , használhatja a JavaScript Function hívást ().
Például,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Ha átadja this
a call()
függvényt, greet()
akkor az this
objektum (ebben az esetben globális objektum) módszereként kezelik .