In diesem Artikel wird hauptsächlich die detaillierte Einführung des Methodenaufrufs in JavaScript vorgestellt. Wenn in JavaScript eine Funktion zu einem Objekt gehört, wird der Zugriff auf die Funktion über das Objekt als „Methodenaufruf“ bezeichnet .
Wenn in JavaScript eine Funktion zu einem Objekt gehört, wird der Zugriff auf die Funktion über das Objekt als „Methodenaufruf“ bezeichnet. Anders als bei gewöhnlichen Funktionsaufrufen ändert sich beim Ausführen eines Methodenaufrufs die Referenz in der Funktion – sie bezieht sich auf das Objekt, das zum Aufrufen der Funktion verwendet wird (das Objekt wird zum Aufrufkontext des Methodenaufrufs):
var x = 99; var sample = { x:1, act:function(a){ this.x = a*a;//assign value to sample's x, not global object's x. } } sample.act(6); console.log(sample.x);//36 console.log(x);//9
Wie beim Zugriff auf Eigenschaften in Objekten kann JavaScript zusätzlich zur Verwendung des Punktoperators auch den Klammeroperator verwenden, um Methodenaufrufe durchzuführen:
//other ways to invoke method sample["act"](7); console.log(sample.x);//4
Für Funktionen in JavaScript ein interessanteres Verhalten ist, dass Funktionen (Abschlüsse) in Funktionen eingebettet werden können. Wenn bei einem Methodenaufruf eine eingebettete Funktion in der Methodenfunktion vorhanden ist, kann der Code in der eingebetteten Funktion auf den externen Variablenwert zugreifen:
//nested function can access variable outside of it. var y = 88; var sample2 = { y:1, act2:function(a){ this.y = inner(); function inner(){ return a*a; } } } sample2.act2(8); console.log(sample2.y);//64 console.log(y);//88
Im Gegensatz zur Intuition ist die eingebettete Funktion jedoch die Code in kann dies nicht von außen erben; das heißt, in der eingebetteten Funktion bezieht sich dies nicht auf das Objekt, das die Methode aufruft, sondern auf das globale Objekt:
//nested function does not inherit "this". The "this" in nested function is global object var sample3 = { act3:function(){ inner(); function inner(){ console.log(this);//window object } } } sample3.act3();
Wenn Sie es wirklich brauchen Einbetten der Funktion Um auf das Objekt zuzugreifen, das die Methode aufruft, können Sie diesen Wert in einer Variablen in der externen Funktion speichern:
//pass "this" to nested function var sample4 = { act4:function(){ var self = this; inner(); function inner(){ console.log(self);//Object {act4=function()} } } } sample4.act4();
Das Obige ist der gesamte Inhalt dieses Kapitels. Weitere verwandte Tutorials finden Sie unter JavaScript-Video-Tutorial !