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-и и обработчици на събития.