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
Der Docker Hub, den wir zuvor verwendet haben, wi...
Lassen Sie uns kurz die Konfiguration von Server ...
1. Installation des MySQL RPM-Pakets # Laden Sie ...
Vorwort Das Wesen eines Deadlocks ist Ressourcenw...
Verwenden Sie v-model, um das Paging-Informations...
Wenn Sie einige 64-Bit-Anwendungen (wie 64-Bit-JD...
Die Geschichte wiederholt sich immer überraschend...
Beim Erstellen von Formularen kommt es häufig vor...
Sondersymbole Benannte Entitäten Dezimalkodierung...
Sie können yum verwenden, um alle Abhängigkeiten ...
Inhaltsverzeichnis 1. Der Unterschied zwischen Fu...
Vorwort In letzter Zeit haben viele neue Kollegen...
Das „nofollow“-Tag wurde vor einigen Jahren von G...
Hier sind 10 HTML-Tags, die zu wenig verwendet od...
MySQL-Zeilen-zu-Spalten-Operation Die sogenannte ...