V tomto výučbe sa pomocou príkladov dozviete o tomto kľúčovom slove v jazyku JavaScript.
V JavaScripte thiskľúčové slovo odkazuje na objekt, kde sa nazýva.
1. tento globálny rozsah
Ak thissa používa samostatne, thisodkazuje na globálny objekt ( windowobjekt v prehľadávačoch). Napríklad,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tu this.nameje to isté ako window.name.
2. táto vnútorná funkcia
Keď thissa používa vo funkcii, thisodkazuje na globálny objekt ( windowobjekt 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, thisodkazuje 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 thisodkazuje na objekt person1. Preto person1.namenám dáva Jack.
Poznámka : Ak thissa 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ď thissa používa v metóde objektu, thisodkazuje 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 thisodkazuje na personobjekt.
5. táto vnútorná vnútorná funkcia
Keď vstúpite thisdo vnútornej funkcie (vo vnútri metódy), thisznamená 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 thisvo vnútri innerFunc()odkazuje na globálny objekt, pretože innerFunc()je vo vnútri metódy.
Avšak this.agemimo innerFunc()odkazuje na personobjekt.
6. táto funkcia Inside Arrow
Vo vnútri funkcie šípky sa thisodkazuje na nadradený rozsah. Napríklad,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Funkcie šípok nemajú svoje vlastné this. Keď použijete thisfunkciu šípky, thisodkazuje 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.namevo vnútri hi()funkcie odkazuje na greetobjekt.
Môžete tiež použiť funkciu šípky na vyriešenie problému s undefinedpouží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 thisz jeho materskej pôsobnosti. Preto this.agedá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ď thissa používa vo funkcii s prísnym režimom, thisje undefined. Napríklad,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Poznámka : Pri použití thisvo 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í thissa call()funkcie, greet()je považovaná za metódu k thisobjektu (globálne objekt v tomto prípade).








