Heim >Web-Frontend >js-Tutorial >JavaScript-Lerntipps: Der Unterschied zwischen Call und Apply
1. Aufruf
Methode aufrufen
Eine Methode eines Objekts aufrufen, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.
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.
Beschreibung
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.
Einfaches Beispiel (Funktionsaufruf):
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.call(sub,3,1);
Was dieses Beispiel bedeutet, ist, sub durch add zu ersetzen, add.call(sub,3,1) == add(3,1) , also Das laufende Ergebnis ist: Alert(4); Ein komplizierteres Beispiel (Methodenaufruf):
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);
Beachten Sie, dass dieser Aufruf bedeutet, die Methode von c1 zur Ausführung auf c2 zu setzen. Es stellt sich heraus, dass c2 dies nicht tut Habe die showNam.()-Methode, setze nun die showNam()-Methode von c1 zur Ausführung, also sollte this.name Klasse2 sein und das Ergebnis der Ausführung ist: Warnung ("Klasse2"); >
function Class1() { this.showTxt = function(txt) { alert(txt); } } function Class2() { Class1.call(this); } var c2 = new Class2(); c2.showTxt("cc");
Mehrfachvererbung
Es ist ganz einfach: Verwenden Sie einfach zwei Aufrufe, um eine Mehrfachvererbung zu erreichen.
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); }
2. apply
hat die gleiche Funktion für apply und call, es gibt jedoch Unterschiede in den Parametern zwischen den beiden.
Die Bedeutung des ersten Parameters ist dieselbe, aber für den zweiten Parameter:
Anwenden von Durchgängen in einem Parameterarray, d. h. mehrere Parameter werden in einem Array zusammengefasst und übergeben, und der Aufruf wird als Aufruf verwendet. Parameter werden übergeben (beginnend mit dem zweiten Parameter).
Die entsprechende Apply-Schreibmethode von func.call(func1,var1,var2,var3) lautet beispielsweise: func.apply(func1,[var1,var2,var3])
Tipps (der Code ist elegant und seine Ausführungseffizienz hoch)
Weitere JavaScript-Lerntipps zu den Unterschieden zwischen Aufruf und Anwendung finden Sie auf der chinesischen PHP-Website!