Die Beispiele in diesem Artikel beschreiben die Verwendung davon in JavaScript. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
Als ich vorher JavaScript lernte, konnte ich das nicht herausfinden. Das ist nicht so einfach zu verstehen wie das in Java. Ich verstand es später, nachdem ich viele Artikel anderer gelesen hatte. Jetzt gehe ich über das, was andere geschrieben haben, damit ich es später nicht vergesse.
Generell gibt es hierfür drei Arten von Anweisungen. Zeigt auf das globale Fenster, das Objekt und den Konstruktor.
Fazit: In Javascript zeigt dies auf das aktuelle Objekt, wenn die Funktion ausgeführt wird. Einfach ausgedrückt: Zu welchem Objekt die aufgerufene Methode gehört, zeigt auf dieses Objekt.
1. Globales Fenster
Einfacher Code
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; printMessage();
Da die aufrufende Methode printMessage zum Fenster gehört, lautet das Ausgabeergebnis:
true this in window
Wenn Sie nun den Code so ändern, dass er komplizierter wird
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMsg : function(){ printMessage(); } }; obj.printMessage();
Zu diesem Zeitpunkt gehört die printMessage-Methode zum Fenster, sodass diese immer noch auf das Fenster verweist. Die obj.printMessage-Methode gehört zum obj-Objekt. Siehe die Analyse unten.
Das Ausgabeergebnis lautet also immer noch: true this in window
2. Das Objekt
Schauen Sie sich nun das Objekt an und ändern Sie den Code leicht
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMessage : window.printMessage }; obj.printMessage();
Ergebnis:
false this in obj
Ja, Sie haben immer noch die Schlussfolgerung des vorherigen Schritts. Die obj.printMessage-Methode gehört zum obj-Objekt, also zeigt dies auf obj.
Okay, keine Sorge mehr, schauen Sie sich den Code an:
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMessage : function(){ var obj2 = { message:'this in obj2', printMessage: window.printMessage }; obj2.printMessage(); } }; obj.printMessage();
Der letzte Aufruf ist obj2.printMessage(). Wenn dies ausgeführt wird, ist dies also obj2
Ergebnis:
falsch, dies in obj2
Haha, ist es dasselbe, wie du denkst? Wer es nennt, zeigt auf wen.
3. Konstruktor
var Person = function(){ this.age = 1; this.name = 'no name'; }; var p = new Person(); console.info('age = ' + p.age); console.info('name = ' + p.name);
Ergebnis:
Alter = 1 Name = kein Name.
Was macht der Konstruktor also damit? Das zuvor erwähnte „Verstehen der JavaScript-Prototypkette in einfachen Worten“ beinhaltet eine Analyse neuer.
var Person = function(){}; var p = new Person();
Der neue Prozess gliedert sich in die folgenden drei Schritte:
(1) var p={}; das heißt, ein Objekt p
initialisieren
(2) p.__proto__ = Person.prototype;
(3) Person.call(p); das heißt, p wird konstruiert, was auch als Initialisierung p
Dann lass uns über den Anruf sprechen.
Aufrufmethode
Gilt für: Funktionsobjekt
Rufen Sie eine Methode für ein Objekt auf, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Parameter:
thisObj
Optional. Das Objekt, das als aktuelles Objekt verwendet wird.
arg1, arg2, , argN
Optional. Es wird eine Folge von Methodenparametern übergeben.
Beschreibung:
Mit der Call-Methode kann eine Methode stellvertretend für ein anderes Objekt aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt. Wenn der Parameter „thisObj“ nicht angegeben wird, wird das globale Objekt als „thisObj“ verwendet.
Erklären Sie, dass die Funktion der Aufrufmethode tatsächlich darin besteht, diesen Punkt der Standardmethode zu ändern. Die Aufrufmethode muss ein Methodenobjekt sein. Wenn der Aufruf aufgerufen wird, wird dieser Punkt des Methodenobjekts zum ersten Parameter der Aufrufmethode.
var p = new Person();
Wenn der Konstruktor Person aufgerufen wird, kann er durch Aufruf verarbeitet werden, sodass dieser in Person auf p zeigt. This.age = 1 entspricht p.age = 1, sodass das Altersattribut zu p hinzugefügt wird.
Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.