Klíčové slovo JavaScriptu
Příklad
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
co je to ?
Klíčové slovo JavaScript this
odkazuje na objekt, ke kterému patří.
Má různé hodnoty v závislosti na tom, kde se používá:
- V metodě
this
odkazuje na objekt vlastníka . - Samostatně
this
odkazuje na globální objekt . - Ve funkci
this
odkazuje na globální objekt . - Ve funkci, v přísném režimu,
this
jeundefined
. - V události
this
odkazuje na prvek , který přijal událost. - Metody jako
call()
aapply()
mohou odkazovatthis
na jakýkoli objekt .
to v metodě
V objektové metodě this
odkazuje na " vlastníka " metody.
V příkladu v horní části této stránky this
odkazuje na objekt osoby .
Objekt person je vlastníkem metody fullName .
fullName : function() {
return this.firstName + " " + this.lastName;
}
tento Sám
Při samostatném použití je vlastníkem objekt Global, takže this
odkazuje na objekt Global.
V okně prohlížeče je globální objekt [object Window]
:
Příklad
let x = this;
V přísném režimu , pokud se používá samostatně, this
také odkazuje na globální objekt
[object Window]
:
Příklad
"use strict";
let x = this;
toto ve funkci (výchozí)
Ve funkci JavaScriptu je vlastníkem funkce výchozí vazba pro this
.
Takže ve funkci this
odkazuje na objekt Global [object Window]
.
Příklad
function myFunction() {
return this;
}
to ve funkci (přísné)
Přísný režim JavaScriptu neumožňuje výchozí vazbu.
Takže při použití ve funkci v přísném režimu this
je undefined
.
Příklad
"use strict";
function myFunction() {
return this;
}
to v obslužných rutinách událostí
V obslužných programech událostí HTML this
odkazuje na prvek HTML, který přijal událost:
Příklad
<button onclick="this.style.display='none'">
Click to
Remove Me!
</button>
Vazba objektové metody
V těchto příkladech this
je objekt osoba (Objekt osoba je „vlastníkem“ funkce):
Příklad
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
Příklad
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
Jinými slovy: this.firstName znamená vlastnost firstName tohoto (osobního) objektu.
Explicitní funkce vazby
Metody call()
a apply()
jsou předdefinované metody JavaScriptu.
Oba mohou být použity k volání objektové metody s jiným objektem jako argumentem.
Více o call()
a apply()
později si můžete přečíst v tomto tutoriálu.
V níže uvedeném příkladu se při volání person1.fullName s argumentem osoba2 this
bude odkazovat na osobu2, i když se jedná o metodu osoby1:
Příklad
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Will return "John Doe"