Middle
Ispričaj mi o načinima očuvanja konteksta u JavaScriptu: bind, call, apply. Čime se razlikuju?
sobes.tech АИ
Одговор од АИ
U JavaScript-u, funkcije su objekti prve klase i imaju dinamički kontekst poziva (this). Metode bind, call i apply omogućavaju upravljanje tim kontekstom:
-
call — poziva funkciju odmah, prosleđujući kontekst i argumente odvojeno.
func.call(context, arg1, arg2); -
apply — slično kao call, ali argumenti se prosleđuju u obliku niza.
func.apply(context, [arg1, arg2]); -
bind — ne poziva funkciju odmah, već vraća novu funkciju sa vezanim kontekstom i, opcionalno, delimično primenjenim argumentima.
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Razlike:
- call i apply pozivaju funkciju odmah;
- bind vraća novu funkciju za kasnije pozivanje;
- apply je koristan kada su argumenti već u nizu;
- bind je koristan za očuvanje konteksta u callback-ovima i handler-ima događaja.