Jaka jest różnica między call a apply?

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

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.