Jaka jest różnica między używaniem call a applystosowaniem, aby wywołać funkcję?
var func = function() {
alert('hello!');
};
func.apply (); vs func.call ();
Czy istnieją różnice w wydajności pomiędzy dwiema wyżej wymienionymi metodami?
1 odpowiedź
Różnica polega na tym, że apply pozwala wywołać funkcję z argumentami jako tablicą; call wymaga, aby parametry zostały wymienione jawnie. Użytecznym mnemonikiem jest „A dla tablicy i C dla przecinka”. Pseudo składnia:
theFunction.apply (valueForThis, arrayOfArgs)
theFunction.call (valueForThis, arg1, arg2, ...)
Istnieje również, zgodnie z ES6, możliwość rozprzestrzeniania tablicy do użytku z funkcją call Przykładowy kod:
function theFunction(name, profession) {
console.log("My name is " + name + " and I am a " + profession +".");
}
theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");
theFunction.call(undefined, ...["Matthew", "physicist"]); // używany z operatorem rozprzestrzeniania