Vorwort
EinführungZunächst einmal wissen wir alle, dass dies ein Schlüsselwort in der Sprache Javascript ist. Es stellt ein internes Objekt dar, das automatisch bei Ausführung der Funktion generiert wird und nur innerhalb der Funktion verwendet werden kann. Der Wert ändert sich je nachdem, wo die Funktion verwendet wird. Es gibt jedoch ein allgemeines Prinzip, nämlich, dass die Richtung von this nicht bestimmt werden kann, wenn die Funktion definiert wird. Erst wenn die Funktion ausgeführt wird, kann bestimmt werden, auf wen this tatsächlich zeigt. Tatsächlich zeigt this letztendlich auf das Objekt, das die Funktion aufruft, in der es sich befindet. Lassen Sie uns dieses Problem Schritt für Schritt untersuchen. Entdecken Sie OneFunktion a() { var user = "Gedämpfter Marmorkarpfen"; console.log(dieser.Name); //undefiniert console.log(dieses); //Fenster } A(); window.a(); //Die beiden Ergebnisse sind gleich Wie oben erwähnt, zeigt dies letztendlich auf das Objekt, das die Funktion aufruft, in der es sich befindet. Hier wird a tatsächlich vom Fensterobjekt angezeigt. Erkundung 2var obj = { Name: 'Gedämpfter Dickkopffisch', f1: Funktion () { console.log(this.name); //Gedämpfter Marmorkarpfen} }; obj.f1(); Es ist wichtig, noch einmal zu betonen, dass die Richtung von this nicht bestimmt werden kann, wenn die Funktion definiert wird. Erst wenn die Funktion ausgeführt wird, können wir feststellen, auf wen this zeigt. In diesem Beispiel wird die f1-Funktion, in der sich this befindet, vom obj-Objekt aufgerufen, daher zeigt this hier auf das obj-Objekt. Erkundung DreiWenn Sie dies vollständig verstehen möchten, müssen Sie sich die folgenden Beispiele ansehen. var obj = { eine: 5, B: { eine: 10, fn: Funktion () { konsole.log(diese.a); //10 } } }; obj.b.fn(); Bedeutet dies nicht, dass sich dies letztlich auf das Objekt bezieht, das die Funktion aufruft, in der es sich befindet? Warum zeigt dies nicht auf das Obj-Objekt? Drei Punkte müssen hier noch ergänzt werden:
Wenn man das sieht, glaube ich, dass jeder das Prinzip dieses Zeigens grundsätzlich verstanden hat. Ich wiederhole es noch einmal: Das Zeigen von this kann nicht bestimmt werden, wenn die Funktion definiert wird. Erst wenn die Funktion ausgeführt wird, können wir bestimmen, auf wen this tatsächlich zeigt. Tatsächlich zeigt this letztendlich auf das Objekt, das die Funktion aufruft, in der es sich befindet. Hier sind einige verschiedene Anwendungsszenarien für diesesKonstruktor (neues Schlüsselwort) Funktion Student() { this.name = 'Gedämpfter Dickkopffisch'; } var s1 = neuer Student(); console.log(s1.name); // Gedämpfter Marmorkarpfen Der Grund, warum Objekt s1 auf den Namen in der Funktion Student zeigen kann, besteht darin, dass das neue Schlüsselwort den Zeiger davon so ändern kann, dass er auf Objekt s1 zeigt. // Der Ausführungsprozess des neuen Schlüsselworts 1. Erstellen Sie ein leeres Objekt im Funktionskörper. 2. Lassen Sie den aktuellen Wert auf dieses leere Objekt zeigen. 3. Fügen Sie hierdurch dem aktuell leeren Objekt Schlüssel-Wert-Paare hinzu. 4. Geben Sie das Objekt mit allen Schlüssel-Wert-Paaren zurück, die der externen Variable hinzugefügt wurden. Der this-Zeiger im Timer varnum = 0; Funktion Obj() { diese.num = 1; this.getNum1 = Funktion () { konsole.log(diese.nummer); }; this.getNum2 = Funktion () { setzeIntervall(Funktion () { konsole.log(diese.nummer); }, 1000); }; } var o = neues Obj(); o.getNum1();//1 (o.num) o.getNum2();//0 (Fenster.num) Der Grund, warum der Wert von Lösung: Die Funktion, in der sich varnum = 0; Funktion Obj() { diese.num = 1; this.getNum1 = Funktion () { konsole.log(diese.nummer); }; this.getNum2 = Funktion () { setzeIntervall(Funktion () { konsole.log(diese.nummer); }.bind(this), 1000);//Verwenden Sie Bind, um dies an diese Funktion zu binden}; } var o = neues Obj(); o.getNum1();//1 (o.num) o.getNum2();//1 (o.num) erklären:
Nach den Grundsätzen: Vor der Verwendung der In dieser Situation wird häufiger Oben finden Sie eine ausführliche Erklärung des This-Pointing-Problems in JavaScript. Weitere Informationen zum This-Pointing in JavaScript finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: MySQL-Optimierung Verbindungsoptimierung
In diesem Artikel werden hauptsächlich 6 Lösungen...
Hintergrund: Ich arbeite derzeit an Funktionen fü...
Linux verwendet iftop, um den Verkehr der Netzwer...
1. Was ist das? MySQL ist das beliebteste relatio...
Schauen wir uns zunächst den GIF-Vorgang an: Fall...
Inhaltsverzeichnis 1. Kapseln Sie komplexe Seiten...
Inhaltsverzeichnis MySQL gefilterte Replikation I...
Das Boxmodell gibt die Breite und Höhe sowie die ...
Unabhängig davon, ob es sich um einen Samba-Diens...
Inhaltsverzeichnis 1. Vorbereitung 2. Dekompressi...
Der größte Engpass bei der Verwendung von Zabbix ...
Heute lernen wir, wie man mit CSS eine coole Bild...
Inhaltsverzeichnis 1. Einleitung 2. Vererbung der...
Nutzungsumgebung Geben Sie im cmd-Modus mysql --v...
Inhaltsverzeichnis Überblick in Operatorverfeiner...