Pour répondre à la partie sur l'utilisation de chaque fonction, utilisez apply
si vous ne connaissez pas le nombre d'arguments, vous serez en passant, ou si elles sont déjà dans un tableau ou un tableau comme objet (comme l' arguments
objet à transmettre vos propres arguments. Utiliser call
autrement, car il n'y a pas besoin d'envelopper les arguments dans un tableau.
f.call(thisObject, a, b, c); // Fixed number of arguments
f.apply(thisObject, arguments); // Forward this function's arguments
var args = [];
while (...) {
args.push(some_value());
}
f.apply(thisObject, args); // Unknown number of arguments
Quand je ne suis pas la réussite de tous les arguments (comme ton exemple), je préfère call
depuis que je suis à l'appel de la fonction. apply
impliquerait que vous êtes à l'application de la fonction de la (inexistante) des arguments.
Il ne devrait pas y avoir de différences de rendement, sauf peut-être si vous utilisez apply
et enveloppez-les arguments dans un tableau (par exemple, f.apply(thisObject, [a, b, c])
au lieu de f.call(thisObject, a, b, c)
). Je n'ai pas testé, donc il pourrait y avoir des différences, mais il serait très spécifiques au navigateur. Il est probable que l' call
est plus rapide si vous n'avez pas déjà les arguments dans un tableau et d' apply
est plus rapide si vous le faites.