Middle
Pověz mi o způsobech zachování kontextu v JavaScriptu: bind, call, apply. Čím se liší?
sobes.tech AI
Odpověď od AI
V JavaScriptu jsou funkce objekty první třídy a mají dynamický kontext volání (this). Metody bind, call a apply umožňují řídit tento kontext:
-
call — volá funkci okamžitě, přičemž předává kontext a argumenty zvlášť.
func.call(context, arg1, arg2); -
apply — podobně jako call, ale argumenty jsou předávány ve formě pole.
func.apply(context, [arg1, arg2]); -
bind — nevolá funkci okamžitě, ale vrací novou funkci s navázaným kontextem a případně částečně předanými argumenty.
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Rozdíly:
- call a apply volají funkci ihned;
- bind vrací novou funkci, kterou lze volat později;
- apply je užitečné, když jsou argumenty již v poli;
- bind je užitečné pro zachování kontextu v callbackách a obslužnících událostí.