V tomto výukovém programu se na příkladech dozvíte o tomto klíčovém slovu JavaScriptu.
V JavaScriptu this
klíčové slovo odkazuje na objekt, kde je voláno.
1. tento Inside Global Scope
Když this
se používá samostatně, this
odkazuje na globální objekt ( window
objekt v prohlížečích). Například,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
Tady this.name
je to stejné jako window.name
.
2. tato vnitřní funkce
Když this
je použito ve funkci, this
odkazuje na globální objekt ( window
objekt v prohlížečích). Například,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. tato funkce Inside Constructor
V JavaScriptu se funkce konstruktoru používají k vytváření objektů. Když se funkce používá jako funkce konstruktoru, this
odkazuje na objekt, ve kterém se používá. Například,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
Výstup
Osoba (jméno: "Jack") Jack
Zde se this
odkazuje na objekt person1. Proto person1.name
nám dává Jacku.
Poznámka : Při this
použití s třídami ES6 odkazuje na objekt, ve kterém je použit (podobně jako funkce konstruktoru).
4. tato metoda Inside Object
Když this
se používá uvnitř metody objektu, this
odkazuje na objekt, ve kterém leží. Napří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ýstup
(jméno: „Jack“, věk: 25 let, pozdrav: ƒ) Jack
Ve výše uvedeném příkladu this
odkazuje na person
objekt.
5. tato vnitřní vnitřní funkce
Když přistupujete this
uvnitř vnitřní funkce (uvnitř metody), this
odkazuje na globální objekt. Napří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ýstup
(jméno: „Jack“, věk: 25 let, pozdrav: ƒ) 25 Okno (…) undefined
Zde this
inside innerFunc()
odkazuje na globální objekt, protože innerFunc()
je uvnitř metody.
Nicméně this.age
mimo innerFunc()
odkazuje na person
objekt.
6. tato funkce Inside Arrow
Uvnitř funkce šipky this
odkazuje na nadřazený obor. Například,
const greet = () => ( console.log(this); ) greet(); // Window (… )
Funkce šipek nemají své vlastní this
. Když použijete this
uvnitř funkce šipky, this
odkazuje na její nadřazený objekt oboru. Například,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
Tady this.name
uvnitř hi()
funkce odkazuje na greet
objekt.
Můžete také použít funkci se šipkou k vyřešení problému s undefined
použitím funkce uvnitř metody (jak je vidět v příkladu 5). Napří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ýstup
(jméno: „Jack“, věk: 25 let, pozdrav: ƒ) 25 (jméno: „Jack“, věk: 25 let, pozdrav: ƒ) 25
Zde innerFunc()
je definována pomocí funkce šipky. Trvá to this
z jeho nadřazeného rozsahu. Proto this.age
dává 25 .
Při použití funkce se šipkou this
se odkazuje na vnější rozsah.
7. tato vnitřní funkce s přísným režimem
Když this
se používá ve funkci s přísným režimem, this
je undefined
. Například,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
Poznámka : Při použití this
uvnitř funkce s přísným režimem můžete použít JavaScript Function call ().
Například,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
Při předání this
se call()
funkce, greet()
je považována za metodu k this
objektu (globální objekt v tomto případě).