Das JavaScript -Schlüsselwort this
Beispiel
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
Was ist das ?
Das JavaScript- this
Schlüsselwort bezieht sich auf das Objekt, zu dem es gehört.
Es hat unterschiedliche Werte, je nachdem, wo es verwendet wird:
- Verweist in einer Methode
this
auf das Besitzerobjekt . - Allein
this
bezieht sich auf das globale Objekt . - Bezieht sich in einer Funktion
this
auf das globale Objekt . this
In einer Funktion ist im strikten Modusundefined
.- Bezieht sich in einem Ereignis
this
auf das Element , das das Ereignis erhalten hat. - Methoden wie
call()
undapply()
können sichthis
auf jedes Objekt beziehen .
dies in einer Methode
Bezieht sich in einer Objektmethode this
auf den „ Besitzer “ der Methode.
Im Beispiel oben auf dieser Seite this
bezieht sich auf das Personenobjekt .
Das Person - Objekt ist der Besitzer der fullName- Methode.
fullName : function() {
return this.firstName + " " + this.lastName;
}
dies allein
Bei alleiniger Verwendung ist der Eigentümer das globale Objekt, this
bezieht sich also auf das globale Objekt.
In einem Browserfenster ist das globale Objekt [object Window]
:
Beispiel
let x = this;
Im strikten Modus bezieht sich bei alleiniger Verwendung this
auch auf das globale Objekt
[object Window]
:
Beispiel
"use strict";
let x = this;
dies in einer Funktion (Standard)
In einer JavaScript-Funktion ist der Eigentümer der Funktion die Standardbindung für this
.
Bezieht sich also in einer Funktion this
auf das globale Objekt [object Window]
.
Beispiel
function myFunction() {
return this;
}
dies in einer Funktion (Strict)
Der strikte JavaScript -Modus lässt keine Standardbindung zu.
Wenn es also in einer Funktion im strikten Modus verwendet wird, this
ist undefined
.
Beispiel
"use strict";
function myFunction() {
return this;
}
Dies in Ereignishandlern
Bezieht sich in HTML-Ereignishandlern this
auf das HTML-Element, das das Ereignis empfangen hat:
Beispiel
<button onclick="this.style.display='none'">
Click to
Remove Me!
</button>
Objektmethodenbindung
In diesen Beispielen this
ist das Personenobjekt (Das Personenobjekt ist der "Eigentümer" der Funktion):
Beispiel
const person = {
firstName : "John",
lastName : "Doe",
id : 5566,
myFunction : function() {
return this;
}
};
Beispiel
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " +
this.lastName;
}
};
Mit anderen Worten: this.firstName bedeutet die firstName- Eigenschaft dieses (Personen-)Objekts.
Explizite Funktionsbindung
Die Methoden call()
und apply()
sind vordefinierte JavaScript-Methoden.
Sie können beide verwendet werden, um eine Objektmethode mit einem anderen Objekt als Argument aufzurufen.
Sie können mehr über call()
und apply()
später in diesem Tutorial lesen.
Im folgenden Beispiel wird beim Aufrufen von person1.fullName mit person2 als Argument this
auf person2 verwiesen, auch wenn es sich um eine Methode von person1 handelt:
Beispiel
const person1 = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const person2 = {
firstName:"John",
lastName: "Doe",
}
person1.fullName.call(person2); // Will return "John Doe"