V tomto výučbe sa pomocou príkladov dozviete o tomto kľúčovom slove v jazyku JavaScript.
V JavaScripte this
kľúčové slovo odkazuje na objekt, kde sa nazýva.
1. tento globálny rozsah
Ak this
sa používa samostatne, this
odkazuje na globálny objekt ( window
objekt v prehľadávačoch). Napríklad,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tu this.name
je to isté ako window.name
.
2. táto vnútorná funkcia
Keď this
sa používa vo funkcii, this
odkazuje na globálny objekt ( window
objekt v prehľadávačoch). Napríklad,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. táto funkcia Inside Constructor
V JavaScripte sa na vytváranie objektov používajú funkcie konštruktora. Keď sa funkcia používa ako funkcia konštruktora, this
odkazuje na objekt, v ktorom sa používa. Napríklad,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Výkon
Osoba (meno: „Jack“) Jack
Tu sa this
odkazuje na objekt person1. Preto person1.name
nám dáva Jack.
Poznámka : Ak this
sa používa s triedami ES6, vzťahuje sa na objekt, v ktorom sa používa (podobne ako funkcie konštruktora).
4. táto metóda Inside Object
Keď this
sa používa v metóde objektu, this
odkazuje na objekt, v ktorom leží. Napríklad,
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();
Výkon
(meno: „Jack“, vek: 25, pozdravujem: ƒ) Jack
Vo vyššie uvedenom príklade sa this
odkazuje na person
objekt.
5. táto vnútorná vnútorná funkcia
Keď vstúpite this
do vnútornej funkcie (vo vnútri metódy), this
znamená to globálny objekt. Napríklad,
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();
Výkon
(meno: „Jack“, vek: 25, pozdrav: ƒ) 25 Okno (…) nedefinované
Tu sa this
vo vnútri innerFunc()
odkazuje na globálny objekt, pretože innerFunc()
je vo vnútri metódy.
Avšak this.age
mimo innerFunc()
odkazuje na person
objekt.
6. táto funkcia Inside Arrow
Vo vnútri funkcie šípky sa this
odkazuje na nadradený rozsah. Napríklad,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Funkcie šípok nemajú svoje vlastné this
. Keď použijete this
funkciu šípky, this
odkazuje sa na jej nadradený objekt rozsahu. Napríklad,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Tu this.name
vo vnútri hi()
funkcie odkazuje na greet
objekt.
Môžete tiež použiť funkciu šípky na vyriešenie problému s undefined
používaním funkcie v metóde (ako je uvedené v príklade 5). Napríklad,
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();
Výkon
(meno: „Jack“, vek: 25 rokov, pozdravuje: ƒ) 25 (meno: „Jack“, vek: 25 rokov, pozdravuje: ƒ) 25
Tu innerFunc()
je definované pomocou funkcie šípky. Berie to this
z jeho materskej pôsobnosti. Preto this.age
dáva 25 .
Keď sa používa funkcia šípky this
, znamená to vonkajší rozsah.
7. táto vnútorná funkcia s prísnym režimom
Keď this
sa používa vo funkcii s prísnym režimom, this
je undefined
. Napríklad,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Poznámka : Pri použití this
vo vnútri funkcie s prísnym režimom môžete použiť JavaScript Function call ().
Napríklad,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Pri odovzdaní this
sa call()
funkcie, greet()
je považovaná za metódu k this
objektu (globálne objekt v tomto prípade).