Zunächst muss gesagt werden, dass der Punkt davon nicht bestimmt werden kann, wenn die Funktion definiert ist; erst wenn die Funktion ausgeführt wird, kann festgestellt werden, auf wen dies verweist; tatsächlich ist der letzte Punkt das Objekt, das sie aufruft (es gibt einige Probleme mit diesem Satz, und später wird erklärt, warum es ein Problem gibt, obwohl die meisten Artikel im Internet dies sagen, obwohl es in vielen Fällen kein Problem mit diesem Verständnis gibt, aber tatsächlich ist dieses Verständnis ungenau, Wenn du das verstehst, wirst du ein Gefühl des Unverständnisses haben), daher werde ich dieses Thema ausführlich untersuchen.
Der Test ist wie folgt:
Dies hat unterschiedliche Werte für unterschiedliche Zwecke der Funktionen. Im Allgemeinen ist dies das Umgebungsobjekt, in dem die Funktion ausgeführt wird. Die Verwendung dieser Situation wird in vier Situationen ausführlich erläutert.
Fall 1: Reine Funktionsaufrufe
Dies ist die gebräuchlichste Verwendung einer Funktion, und es handelt sich um einen globalen Aufruf, sodass dies ein globales Objekt darstellt. Schau dir den Code unten an, er läuft mit dem Ergebnis 1.
Fall 2: Aufruf als Objektmethode
Die Funktion kann auch als Methode eines Objekts bezeichnet werden, wobei sich dies auf das Elternobjekt bezieht.
Fall 3 Aufruf als Konstruktor
Der sogenannte Konstruktor ist, dass durch diese Funktion ein neues Objekt erzeugt werden kann. An diesem Punkt bezieht sich dies auf dieses neue Objekt.
Das Ergebnis des Durchlaufs ist 1. Um zu zeigen, dass dies derzeit kein globales Objekt ist, nehmen wir einige Änderungen am Code vor:
Das Ergebnis des Durchlaufs ist 2, was darauf hinweist, dass sich der Wert der globalen Variablen x überhaupt nicht verändert hat.
Fall 4 Anwendungsruf
apply() ist eine Methode einer Funktion, die das aufrufende Objekt der Funktion verändert. Sein erster Parameter repräsentiert das geänderte Objekt, das die Funktion aufruft. Daher bezieht sich dies auf diesen ersten Parameter.
Wenn der apply()-Parameter leer ist, wird das globale Objekt standardmäßig aufgerufen. Daher ist das Ergebnis des Laufs 0, was beweist, dass dies sich auf das globale Objekt bezieht.
Wenn du die letzte Codezeile änderst auf
Das laufende Ergebnis wird zu 1, was beweist, dass dies das Objekt obj darstellt.
(Ende)
Referenz:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
|