call
wywołany na funkcji pozwala przekazać do niej obiekt, który będzie używany jako this
. Ładuje do funkcji jej kontekst.
call
różni się od bind
tym, że funkcja jest od razu wywoływana z parametrami przekazanymi jako drugi i następne argumenty do call
. Zostaną przekazane do funkcji call w tej samej kolejności
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.call(person); // I'm Mario and this is an arg1: undefined and arg2: undefined printFunction.call(person, "arg1", "arg2"); // I'm Mario and this is an arg1: arg1 and arg2: arg2
call
różni się od apply
tym, że przekazuje do funkcji swoje argumenty oddzielone przecinkami w tej samej kolejności, podczas gdy apply
otrzymuje je jako lista i przekazuje je do funkcji w tej samej kolejności
printFunction.call(person, "arg1", "arg2"); // I'm Mario and this is an arg1: arg1 and arg2: arg2 printFunction.apply(person, ["arg1", "arg2"]); // I'm Mario and this is an arg1: arg1 and arg2: arg2