Heim >Web-Frontend >js-Tutorial >Beispielanalyse der Methoden call() und apply() in Javascript_Grundkenntnisse

Beispielanalyse der Methoden call() und apply() in Javascript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:29:501317Durchsuche

1. Methodendefinition

Aufrufmethode:
Syntax: call([thisObj[,arg1[, arg2[, [,.argN]]]]])
Definition: Rufen Sie eine Methode eines Objekts auf, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.
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 kein thisObj-Parameter angegeben wird, wird das globale Objekt als thisObj verwendet.

Methode anwenden:
Syntax: apply([thisObj[,argArray]])
Definition: Wenden Sie eine Methode eines Objekts an, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.
Beschreibung:
Wenn argArray kein gültiges Array oder kein Argumentobjekt ist, wird ein TypeError verursacht.
Wenn weder argArray noch thisObj bereitgestellt werden, wird das globale Objekt als thisObj verwendet und es können keine Parameter übergeben werden.

2. Häufige Beispiele

a、

Code kopieren Der Code lautet wie folgt:

Funktion add(a,b)
{
alarm(a b);
}
Funktion sub(a,b)
{
alarm(a-b);
}

add.call(sub,3,1);

Was dieses Beispiel bedeutet, ist, sub durch add, add.call(sub,3,1) == add(3,1) zu ersetzen, also ist das laufende Ergebnis: Alert(4); // Hinweis: in js Die Funktion ist eigentlich ein Objekt und der Funktionsname ist eine Referenz auf das Funktionsobjekt.

b、

Code kopieren Der Code lautet wie folgt:

Funktion Animal(){
This.name = "Tier"; This.showName = function(){
warning(this.name);
}  
}
Funktion Cat(){
This.name = „Katze“; }
var animal = new Animal();
var cat = new Cat();
// Über die Call- oder Apply-Methode wird die ursprünglich zum Animal-Objekt gehörende Methode showName () zur Verwendung an das Objekt cat übergeben.
//Das Eingabeergebnis ist „Katze“
animal.showName.call(cat,","
//animal.showName.apply(cat,[]);


Aufruf bedeutet, die Methode von animal zur Ausführung auf cat zu übertragen. Ursprünglich hatte cat keine showName()-Methode, sodass die Methode von animal zur Ausführung auf cat gestellt wird.

c. Vererbung implementieren

Funktion Tier(Name){
This.name = name;
This.showName = function(){
warning(this.name);
}  

Funktion Katze(Name){
Animal.call(this, name);

var cat = new Cat("Black Cat"); cat.showName();



Animal.call(this) bedeutet, dass das Animal-Objekt anstelle dieses Objekts verwendet wird. Verfügt Cat dann nicht über alle Eigenschaften und Methoden von Animal? Das Cat-Objekt kann die Methoden und Eigenschaften von Animal direkt aufrufen.
d. Mehrfachvererbung

Code kopieren Der Code lautet wie folgt: Funktion Class10()
{
This.showSub = function(a,b)
{
alarm(a-b);
}
}
Funktion Class11()
{
This.showAdd = function(a,b)
{
alarm(a b);
}
}
Funktion Class2()
{
Class10.call(this);
Class11.call(this);
}

Es ist ganz einfach: Verwenden Sie zwei Aufrufe, um eine Mehrfachvererbung zu erreichen
Natürlich gibt es auch andere Möglichkeiten, js zu erben, z. B. die Verwendung von Prototypketten. Ich erkläre hier nur die Verwendung von Aufrufen. Apropos Call und natürlich Apply: Diese beiden Methoden bedeuten im Grunde dasselbe. Der Unterschied besteht darin, dass der zweite Parameter von Call von beliebigem Typ sein kann, während der zweite Parameter von Apply ein Array sein muss oder Argumente sein können 🎜> Und Angerufener, Anrufer...

Zusammenfassung:

Um es einfach auszudrücken: Derselbe Punkt: Die Wirkungen der beiden Methoden sind genau die gleichen

Unterschied: Die von der Methode übergebenen Parameter sind unterschiedlich

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