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.