JavaScript-Schlüsselwort this
In objektorientierten Sprachen stellt this eine Referenz auf das aktuelle Objekt dar.
In JavaScript ist this jedoch nicht fest; es ändert sich mit der Ausführungsumgebung.
- In einer Methode verweist this auf das Objekt, dem die Methode gehört.
- Wird this allein verwendet, verweist es auf das globale Objekt.
- In einer Funktion verweist this auf das globale Objekt.
- In einer Funktion ist this im Strict-Modus undefined.
- Bei einem Event verweist this auf das Element, das das Event empfängt.
- Methoden wie call() und apply() können this an jedes Objekt binden.
Beispiele
Selbst ausprobieren »
this in Methoden
In einer Objektmethode verweist this auf das Objekt, das die Methode aufruft, in der es sich befindet.
Im obigen Beispiel steht this für das person-Objekt.
Das Objekt, das die fullName-Methode besitzt, ist person.
Beispiele
Selbst ausprobieren »
this allein verwenden
Wenn this allein verwendet wird, verweist es auf das globale Objekt.
In einem Browser ist window das globale Objekt [object Window]:
Im strict mode verweist this, wenn es allein verwendet wird, ebenfalls auf das globale Objekt.
this in Funktionen verwenden (Standard)
In einer Funktion ist der Eigentümer der Funktion standardmäßig an this gebunden.
In einem Browser ist window das globale Objekt [object Window]:
Verwendung von this in Funktionen (Strict Mode)
Im Strict Mode ist die Funktion nicht an this gebunden, und zu diesem Zeitpunkt ist thisundefined。
this bei Events
In HTML-Event-Handlern verweist this auf das HTML-Element, das das Ereignis empfängt:
Beispiele
Selbst ausprobieren »
Bindung in Objektmethoden
Im folgenden Beispiel ist this das person-Objekt; das person-Objekt ist der Eigentümer der Funktion:
Beispiele
Selbst ausprobieren »
Beispiele
Selbst ausprobieren »
Erklärung:this.firstNamerepräsentiertthisdas (person-)Objekt-Attribut namensfirstNameEigenschaft.
Explizite Funktionsbindung
In JavaScript sind Funktionen auch Objekte; Objekte haben Methoden, und apply und call sind Methoden von Funktionsobjekten. Diese beiden Methoden sind äußerst mächtig; sie ermöglichen das Umschalten des Ausführungskontexts einer Funktion, d. h. des Objekts, an das this gebunden ist.
Im folgenden Beispiel, wenn wir person2 als Argument verwenden, um die Methode person1.fullName aufzurufen,thisthis wird auf person2 zeigen, obwohl es eine Methode von person1 ist:
Beispiele
Selbst ausprobieren »