Назад к вопросам
Simbirsoft
Middle
9
Расскажи про способы сохранения контекста в JavaScript: bind, call, apply. Чем они отличаются?
Компании, где спрашивали
Ответ от нейросети
sobes.tech 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 полезен для сохранения контекста в колбэках и обработчиках событий.