Middle
Opowiedz mi o sposobach zachowania kontekstu w JavaScript: bind, call, apply. Czym się różnią?
sobes.tech AI
Odpowiedź od AI
W JavaScript funkcje są obiektami pierwszej klasy i mają dynamiczny kontekst wywołania (this). Metody bind, call i apply pozwalają na zarządzanie tym kontekstem:
-
call — wywołuje funkcję natychmiast, przekazując kontekst i argumenty osobno.
func.call(context, arg1, arg2); -
apply — podobne do call, ale argumenty są przekazywane jako tablica.
func.apply(context, [arg1, arg2]); -
bind — nie wywołuje funkcji od razu, lecz zwraca nową funkcję z powiązanym kontekstem i opcjonalnie częściowo zastosowanymi argumentami.
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Różnice:
- call i apply wywołują funkcję natychmiast;
- bind zwraca nową funkcję do wywołania później;
- apply jest przydatne, gdy argumenty są już w tablicy;
- bind jest przydatne do zachowania kontekstu w callbackach i obsłudze zdarzeń.