Der Hauptunterschied besteht darin, dass call
eine Liste von Argumenten akzeptiert, wo Argumente
myFunc.call(thisObj, arg1, arg2, arg3);
Während apply
akzeptiert nur zwei ar: nach dem ersten direkt an die Methode übergeben werden, gumente - die erste ist die this
Objekt und das zweite ist ein Array von Argumenten an die Methode übergeben:
myFunc.apply(thisObj, [arg1, arg2, arg3]);
apply
oft in einer Situation verwendet wird, in dem Sie das arguments
Objekt übergeben werden soll, die eine Liste enthält von Argumente, die an die aktuelle Funktion übergeben werden, an eine andere Methode:
function myOtherFunc(arg1, arg2, arg3) {
if (typeof arg1 == "object" && arg1 !== null)
myFunc.apply(this, arguments);
}
Es gibt keine * beste * Lösung;) –
@Felix: +1, mir ist nicht in den Sinn gekommen, dass das wohl ein Betrogener wäre. –
@Felix Kling: Ups, habe das nicht bemerkt;) – jwueller