Middle
Պատմիր ինձ JavaScript-ում կոնտեքստը պահպանելու եղանակների մասին: bind, call, apply: Ինչն է նրանց տարբերությունը?
sobes.tech AI
Պատասխան AI-ից
JavaScript-ում ֆունկցիաները առաջին կարգի օբյեկտներ են և ունեն դինամիկ կանչման կոնտեքստ (this): bind, call և apply մեթոդները թույլ են տալիս կառավարել այդ կոնտեքստը:
-
call — անմիջապես կանչում է ֆունկցիան, փոխանցելով կոնտեքստը և արգումենտները առանձին:
func.call(context, arg1, arg2); -
apply — նման է call-ին, բայց արգումենտները փոխանցվում են զանգվածի տեսքով:
func.apply(context, [arg1, arg2]); -
bind — չի կանչում ֆունկցիան անմիջապես, այլ վերադարձնում է նոր ֆունկցիա՝ կապված կոնտեքստի և, ցանկության դեպքում, մասնակի կիրառված արգումենտների հետ:
const boundFunc = func.bind(context, arg1); boundFunc(arg2);
Տարբերություններ՝
- call և apply անմիջապես կանչում են ֆունկցիան;
- bind վերադարձնում է նոր ֆունկցիա, որը կարելի է կանչել ուշ;
- apply-ը օգտակար է, երբ արգումենտները արդեն զանգվածում են;
- bind-ը օգտակար է կոնտեքստը պահպանելու համար callback-ներում և իրադարձության մշակողներում։