call, apply, bind — jak ustawić this?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
call wywołuje funkcję z argumentami osobno, apply z listą argumentów, a bind tworzy nową funkcję z ustalonym this i opcjonalnie częścią argumentów.
JavaScript
function greet(prefix) { return `${prefix} ${this.name}`; }
const user = { name: 'Anna' };
greet.call(user, 'Hej'); // Hej Anna
greet.apply(user, ['Hej']); // Hej Anna
const hello = greet.bind(user, 'Hej');
hello(); // Hej AnnaPułapka: arrow function przejmuje this leksykalnie. Call/apply/bind nie zmienią w niej this tak jak w zwykłej funkcji. Przy zdejmowaniu listenera muszę użyć tej samej referencji funkcji, nie kolejnego bind.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.