Middle
Mesélj a JavaScript-ben a kontextus megőrzésének módjairól: bind, call, apply. Miben különböznek?
sobes.tech MI
Válasz az MI-től
A JavaScript-ben a függvények első osztályú objektumok, és dinamikus hívási kontextussal (this) rendelkeznek. A bind, call és apply módszerek lehetővé teszik ennek a kontextusnak a kezelését:
-
call — azonnal meghívja a függvényt, átadva a kontextust és az argumentumokat külön.
func.call(context, arg1, arg2); -
apply — hasonló a call-hoz, de az argumentumokat tömbként adja át.
func.apply(context, [arg1, arg2]); -
bind — nem hívja meg azonnal a függvényt, hanem egy új függvényt ad vissza, amelyhez kötött kontextus és opcionálisan részben alkalmazott argumentumok tartoznak.
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Különbségek:
- a call és az apply azonnal meghívja a függvényt;
- a bind későbbi hívásra készít egy új függvényt;
- az apply akkor hasznos, ha az argumentumok már tömbben vannak;
- a bind akkor hasznos, ha a kontextust callback-ekben és eseménykezelőkben akarjuk megőrizni.