Sobes.tech
Middle

Pastāsti man par veidiem, kā saglabāt kontekstu JavaScript: bind, call, apply. Kā tie atšķiras?

sobes.tech AI

Atbilde no AI

JavaScript funkcijas ir pirmās klases objekti, un tām ir dinamiskais izsaukšanas konteksts (this). Metodes bind, call un apply ļauj pārvaldīt šo kontekstu:

  • call — izsauc funkciju nekavējoties, nododot kontekstu un argumentus atsevišķi.

    func.call(context, arg1, arg2);
    
  • apply — līdzīgs call, bet argumenti tiek nodoti kā masīvs.

    func.apply(context, [arg1, arg2]);
    
  • bind — neizsauc funkciju nekavējoties, bet atgriež jaunu funkciju ar sasaistītu kontekstu un, ja nepieciešams, daļēji piemērotiem argumentiem.

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

Atšķirības:

  • call un apply izsauc funkciju nekavējoties;
  • bind atgriež jaunu funkciju, ko var izsaukt vēlāk;
  • apply ir noderīgs, ja argumenti jau ir masīvā;
  • bind ir noderīgs, lai saglabātu kontekstu atpakaļzvanos un notikumu apstrādātājos.