Heim > Web-Frontend > js-Tutorial > Detaillierte Einführung in Methodenaufrufe in JavaScript

Detaillierte Einführung in Methodenaufrufe in JavaScript

PHPz
Freigeben: 2018-09-29 17:56:42
Original
1168 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Kapitels. Weitere verwandte Tutorials finden Sie unter JavaScript-Video-Tutorial !

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage