Sobes.tech
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.