Sobes.tech
Middle

Pověz mi o způsobech zachování kontextu v JavaScriptu: bind, call, apply. Čím se liší?

sobes.tech AI

Odpověď od AI

V JavaScriptu jsou funkce objekty první třídy a mají dynamický kontext volání (this). Metody bind, call a apply umožňují řídit tento kontext:

  • call — volá funkci okamžitě, přičemž předává kontext a argumenty zvlášť.

    func.call(context, arg1, arg2);
    
  • apply — podobně jako call, ale argumenty jsou předávány ve formě pole.

    func.apply(context, [arg1, arg2]);
    
  • bind — nevolá funkci okamžitě, ale vrací novou funkci s navázaným kontextem a případně částečně předanými argumenty.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Rozdíly:

  • call a apply volají funkci ihned;
  • bind vrací novou funkci, kterou lze volat později;
  • apply je užitečné, když jsou argumenty již v poli;
  • bind je užitečné pro zachování kontextu v callbackách a obslužnících událostí.