Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung der Aufrufmethode in js

Detaillierte Erklärung der Aufrufmethode in js

小云云
小云云Original
2018-03-22 16:16:093534Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die detaillierte Erklärung der Aufrufmethode in js mit. Ich hoffe, er kann Ihnen helfen.

Methode aufrufen
Siehe
Gilt für: Funktionsobjekt
Erfordert
Version 5.5
Rufen Sie eine Methode für ein Objekt auf und ersetzen Sie das aktuelle Objekt durch ein anderes Objekt.
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.
Erklärung
Mit der Aufrufmethode kann eine Methode anstelle eines anderen Objekts 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.
Auf den ersten Blick kann es leicht zu Verwirrung kommen. Lassen Sie uns daher zunächst einige einfache Erklärungen abgeben Methode von obj1 Verwenden Sie sie für obj2, und die folgenden Argumente1..werden als Parameter übergeben.
Geben Sie ein konkretes Beispiel

function add(a,b) 
{ 
    alert(a+b); 
} 
function sub(a,b) 
{ 
    alert(a-b); 
} 
add.call(sub,3,1);
Was dieses Beispiel bedeutet, ist die Verwendung von add zum Ersetzen von sub, add.call(sub,3,1) == add(3,1) , Das laufende Ergebnis lautet also: Alert(4); // Hinweis: Funktionen in js sind tatsächlich Objekte und der Funktionsname ist eine Referenz auf das Funktionsobjekt.

Sehen Sie sich ein etwas komplizierteres Beispiel an

Beachten Sie, dass Aufruf bedeutet, die Methode von c1 zur Ausführung auf c2 zu setzen. Es stellt sich heraus, dass c2 keine showNam()-Methode hat besteht darin, den showNam von c1 zu platzieren Die ()-Methode wird zur Ausführung auf c2 platziert, daher sollte this.name Klasse2 sein und das Ausführungsergebnis ist: Warnung ("Klasse2");
function Class1() 
{ 
    this.name = "class1"; 
    this.showNam = function() 
    { 
        alert(this.name); 
    } 
} 
function Class2() 
{ 
    this.name = "class2"; 
} 
var c1 = new Class1(); 
var c2 = new Class2(); 
c1.showNam.call(c2);
Was denkst du? Interessant ist, dass Sie das a-Objekt die Methode des b-Objekts ausführen lassen können, woran Java-Programmierer nicht zu denken wagen. Interessanter ist, dass Sie call verwenden können, um die Vererbung zu implementieren


function Class1() 
{ 
    this.showTxt = function(txt) 
    { 
        alert(txt); 
    } 
} 
function Class2() 
{ 
    Class1.call(this); 
} 
var c2 = new Class2(); 
c2.showTxt("cc");
Auf diese Weise erbt Class2 Class1.call(this) bedeutet, dass das Class1-Objekt anstelle dieses Objekts verwendet wird Klasse2 Verfügen Sie nicht über alle Eigenschaften und Methoden von Klasse1? Das Ausführungsergebnis lautet: Warnung („cc“) JavaScript entsteht Um die Vererbung objektorientiert zu simulieren, kann auch eine Mehrfachvererbung implementiert werden.



Es ist sehr einfach, eine Mehrfachvererbung zu erreichen.

Natürlich gibt es auch andere Methoden der JS-Vererbung, beispielsweise die Verwendung von Prototypketten . Die Verwendung von call
function Class10() 
{ 
    this.showSub = function(a,b) 
    { 
        alert(a-b); 
    } 
} 
function Class11() 
{ 
    this.showAdd = function(a,b) 
    { 
        alert(a+b); 
    } 
} 
function Class2() 
{ 
    Class10.call(this); 
    Class11.call(this); 
}
Ich habe call erwähnt, und natürlich bedeuten diese beiden Methoden dasselbe.

Der Unterschied besteht darin, dass der zweite Parameter von call sein kann Der zweite Parameter von apply muss ein Array sein.

Verwandte Empfehlungen:

Detaillierte Erklärung zur Verwendung der Funktionsaufrufmethode in Javascript

Anleitung zur Verwendung der PHP-__call-Methode

Detaillierte Einführung in die js-Aufrufmethode (Vererbung von js)_Grundkenntnisse

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung der Aufrufmethode in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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