Middle
Povedz mi o spôsoboch zachovania kontextu v JavaScripte: bind, call, apply. Čo sa od seba líši?
sobes.tech AI
Odpoveď od AI
V JavaScripte sú funkcie objektmi prvej triedy a majú dynamický kontext volania (this). Metódy bind, call a apply umožňujú riadiť tento kontext:
-
call — volá funkciu okamžite, pričom odovzdáva kontext a argumenty oddelene.
func.call(context, arg1, arg2); -
apply — podobne ako call, ale argumenty sa odovzdávajú vo forme poľa.
func.apply(context, [arg1, arg2]); -
bind — nevolá funkciu okamžite, ale vracia novú funkciu s naviazaným kontextom a prípadne čiastočne aplikovanými argumentmi.
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Rozdiely:
- call a apply volajú funkciu ihneď;
- bind vracia novú funkciu na neskoršie volanie;
- apply je užitočné, keď sú argumenty už v poli;
- bind je užitočné na zachovanie kontextu v callbackoch a obslužníkoch udalostí.