Sobes.tech
Middle

Papaskink apie būdus išsaugoti kontekstą JavaScript: bind, call, apply. kuo jie skiriasi?

sobes.tech AI

Atsakymas iš AI

JavaScript'e funkcijos yra pirmosios klasės objektai ir turi dinaminį kvietimo kontekstą (this). Metodai bind, call ir apply leidžia valdyti šį kontekstą:

  • call — iš karto iškviečia funkciją, perduodant kontekstą ir argumentus atskirai.

    func.call(context, arg1, arg2);
    
  • apply — panašus į call, bet argumentai perduodami kaip masyvas.

    func.apply(context, [arg1, arg2]);
    
  • bind — ne iš karto iškviečia funkciją, o grąžina naują funkciją su susietu kontekstu ir, jei reikia, iš dalies pritaikytais argumentais.

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

Skirtumai:

  • call ir apply iškviečia funkciją nedelsiant;
  • bind grąžina naują funkciją, kurią galima iškviesti vėliau;
  • apply naudinga, kai argumentai jau yra masyve;
  • bind naudinga išlaikyti kontekstą callback'uose ir įvykių tvarkytojose.