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、
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、
c. Vererbung implementieren
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...
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