VorwortJeder, der JavaScript gelernt hat, muss sich der Frage bewusst sein, wohin dies in verschiedenen Umgebungen verweist. Schauen Sie sich dann den folgenden Code an Var-Typ = 1 Funktion toWhere(){ dieser.Typ = 2; } wohin(); console.log(Typ) Sie werden bestimmt denken: Hier wird ein globaler Variablentyp deklariert. Bei Ausführung von type=1 wird der Wert 1 zugewiesen. Danach wird die Funktion toWhere aufgerufen. Wenn wir dies in der Funktion sehen, bestimmen wir, wohin dies zeigt. Hier ist sehr deutlich, dass dies auf Fenster zeigt. Nachdem this.type=2 ausgeführt wurde, wird der globalen Variablen type der Wert 2 zugewiesen. Schließlich wird der globale Variablentyp gedruckt und das Ergebnis ist offensichtlich 2. Öffnen Sie zur Überprüfung den Browser. Dort wird eindeutig eine 2 angezeigt. Ist das also das Ende? Wenn Sie Node gelernt haben und den obigen Code nun mit Node.js erneut ausführen, werden Sie den Unterschied feststellen. Jetzt stellen Sie fest, dass die 1 falsch ist. Ist sie nicht gleich 2? Verwandtes DebuggenAus den obigen Beispielen können wir ersehen, dass derselbe JS-Code unterschiedliche Ergebnisse liefert, wenn er im Browser und in Node.JS ausgeführt wird. Dies liegt eigentlich an der Problematik dieser Ausrichtung, allerdings unterscheidet sich diese Ausrichtung von dem, was wir normalerweise kennen. Dieses Zeigeproblem wird durch das Arbeitsprinzip des Knotens verursacht Var-Typ = 1 Funktion toWhere() { dieser.Typ = 2 console.log("dies zeigt auf in der Funktion", dies) } zuWohin() console.log(Typ) console.log("global dies", dies) 1. Drucken Sie dies im Browser Dies in der Funktion zeigt auf Fenster, und das globale Dies zeigt auch auf Fenster 2. Drucken Sie dies in nodeJs Habe es gefunden. Dies zeigt in der Funktion auf Objekt [global]. Wenn wir diesem Wert einer Funktion einen Wert zuweisen, wird dieser tatsächlich an das globale Objekt angehängt. Es wird also nichts an dem Wert dieser Sache im globalen KnotenprinzipanalyseSehen wir uns also an, warum das passiert. Zuerst müssen wir verstehen, wie nodeJs funktioniert
In der vorherigen Erklärung haben wir festgestellt, dass ein extern ausgegebenes this auf ein leeres Objekt {} verweist. Tatsächlich ist jede in node ausgeführte Datei in ein {} eingeschlossen, sodass die Skriptdateien in ihren eigenen Closures ausgeführt werden, ähnlich wie im Folgenden { (Funktion(){ //Skriptdatei })() } Im vorherigen Beispiel bezieht sich this außerhalb der Funktion auf ein leeres Objekt {}, und innerhalb der Funktion hat this keinen angegebenen Ausführungskontext, sodass es sich auf das globale Objekt - bezieht (das Zugriff auf den globalen Bereich des anonymen Funktionsausführungskontexts hat). ZusammenfassenDies ist das Ende dieses Artikels über die Unterschiede zwischen dem Schlüsselwort this in NodeJS und dem Browser. Weitere Informationen zum Schlüsselwort this in NodeJS und dem Browser finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: MySQL-Datenbank muss SQL-Anweisungen kennen (erweiterte Version)
>>: So stellen Sie HTTPS kostenlos auf Tencent Cloud bereit
Das Ändern oder Löschen einer Datenbank kann zu D...
Hintergrund: Da die Projekte des Unternehmens dem...
einführen Dieser Artikel basiert auf React + antd...
Inhaltsverzeichnis 1. Oberflächliche Kopie 1. Obj...
So hosten Sie zwei oder mehr Sites auf dem belieb...
Erklärung auf der offiziellen Website: Wenn eine ...
Voraussetzung: Mac, zsh installiert, mysql herunt...
Inhaltsverzeichnis 1. Wenn beim Einfügen oder Änd...
Ich habe fast zwei Stunden damit verbracht, versc...
Inhaltsverzeichnis 1. Standort / Matching 2. Stan...
Inhaltsverzeichnis Was sind Hooks? Klassenkompone...
Vorwort Das über KMS aktivierbare Windows-System ...
Hintergrund PNG-Bilder benötigen mehr Speicherpla...
Inhaltsverzeichnis 1. Art von 2. Instanz von 3. K...
Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...