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