apply
wywołany na funkcji pozwala przekazać do niej obiekt, który będzie używany jako this
. Ładuje do funkcji jej kontekst.
apply
różni się od bind
tym, że funkcja jest od razu wywoływana z parametrami przekazanymi jako drugi argument do apply
. Drugi argument jest listą parametrów, które zostają przekazane do funkcji po kolei.
const person = { firstName: "Mario", print: function (arg1, arg2) { console.log( `I'm ${this?.firstName} and this is an arg1: ${arg1} and arg2: ${arg2}` ); }, }; person.print(); // I'm Mario and this is an arg1: undefined and arg2: undefined const printFunction = person.print; printFunction(); // I'm undefined and this is an arg1: undefined and arg2: undefined printFunction.apply(person); // I'm Mario and this is an arg1: undefined and arg2: undefined printFunction.apply(person, ["arg1", "arg2"]); // I'm Mario and this is an arg1: arg1 and arg2: arg2
apply
różni się od call
tym, że przekazuje do funkcji swój drugi argument - listę, z której kolejne wartości przekazuje do funkcji w tej samej kolejności, podczas gdy call
otrzymuje je oddzielone przecinkami jako kolejne argumenty.
printFunction.apply(person, ["arg1", "arg2"]); // I'm Mario and this is an arg1: arg1 and arg2: arg2 printFunction.call(person, "arg1", "arg2"); // I'm Mario and this is an arg1: arg1 and arg2: arg2