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-ҳо ва ҳодисаҳои идоракунӣ муфид аст.