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.