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