In den meisten objektorientierten Programmiersprachen hat das Schlüsselwort "this" eine besondere Bedeutung. Normalerweise bezieht es sich auf das Objekt, das den Ausführungskontext darstellt (d. h. auf die aktuelle Instanz des Objekts). Wir verwenden es zum Beispiel, wenn wir uns auf eine Objekteigenschaft von innen heraus beziehen: Wir geben this.propertyName ein, und dann ist der Kontext das Objekt und this bezieht sich darauf.
diesesin JavaScript
Unter JavaScript es ist komplizierter, denn wo diese hängt nicht nur davon ab, wie die Funktion definiert ist, sondern auch von der Form des Aufrufs.
Schauen Sie sich an, wie diese funktioniert je nach Ort und Form der Anrufung.
Globaler Kontext
Wird in einem globalen Kontext verwendet, der an das globale Objekt gebunden ist, wie Fenster in einem Webbrowser.
this; // Fenster
Innerhalb der Objektmethode
Wird innerhalb einer Objektmethode verwendet, die an das nächstgelegene umschließende Objekt gebunden ist. Das Objekt ist der neue Kontext der diese Schlüsselwort. Beachten Sie, dass Sie nicht das Funktion () zur ES6-Syntax fun: () => this.context denn dadurch wird der Kontext verändert.
Wird innerhalb einer Funktion verwendet, die keinen Kontext (kein Objekt als Elternteil) hat, der an den globalen Kontext gebunden ist, auch wenn die Funktion innerhalb des Objekts definiert ist.
Beachten Sie, dass wir var Kontext anstelle von let/const Kontext denn lassen Sie und const den von der Variable eingeschlossenen Kontext ändern. var immer dem globalen Ausführungskontext am nächsten ist. lassen Sie und const Variablen nur in einem lokalen Blockbereich deklarieren.
Aufruf() und apply() sind JavaScript Funktionen. Mit ihnen kann ein Objekt Methoden verwenden, die einem anderen Objekt gehören. Aufruf() nimmt Argumente getrennt auf, wobei apply() nimmt sie als Array auf.
diese ist hier an neuen Kontext gebunden, der in Aufruf() und apply() Methoden.
bind() ist ebenfalls eine JavaScript-Methode. Sie erzeugt eine neue Funktion, die Folgendes hat diese auf den ersten Parameter gesetzt, der an bind()**.**
Wird in jedem Event-Handler verwendet (zum Beispiel, addeventListener, onclick, attachEvent), wird es an das DOM-Element gebunden, an das das Ereignis angehängt wurde.
document.querySelector(".foo").addEventListener("click", function() {
this; // verweist auf das Div-Element "foo".
});
ES6-Pfeilfunktion
Innerhalb der Pfeilfunktion verwendet, ist sie immer an ihren lexikalischen Bereich gebunden. In der Pfeilfunktion können Sie die Funktion nicht neu zuweisen. diese in irgendeiner Weise.