> Какие способы передачи контекста исполнения функции существуют в JavaScript? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: RecruitTech, TYMY
Стек: JavaScript
> Пример ответа
В JavaScript контекст исполнения функции (значение this) можно передать несколькими способами:
-
Неявная передача через вызов метода -
thisссылается на объект, перед точкой:obj.method(). -
Явная привязка через
callиapply- первый аргумент задаётthis, остальные - параметры функции:-
func.call(context, arg1, arg2) -
func.apply(context, [arg1, arg2])
-
-
Жёсткая привязка через
bind- создаёт новую функцию с навсегда зафиксированнымthis:const boundFunc = func.bind(context)
-
Контекст стрелочных функций - они не имеют собственного
this, а наследуют его из внешнего лексического окружения (где были объявлены). -
Контекст через
new- при вызове функции сnewсоздаётся новый объект, который становитсяthis. -
Глобальный контекст - в нестрогом режиме
thisв обычной функции ссылается на глобальный объект (windowв браузере), в строгом -undefined.
Примеры:
JAVASCRIPTfunction show() { console.log(this.name); }const obj = { name: 'Alice' };// call/applyshow.call(obj); // Aliceshow.apply(obj); // Alice// bindconst bound = show.bind(obj);bound(); // Alice// стрелочная функцияconst arrow = () => console.log(this.name);arrow.call(obj); // this берётся из внешней области, не из call
> Похожие задачи по frontend
Что еще можно сделать с помощью замыканий в JavaScript кроме счетчика
Как запустить код в консоли браузера
Что такое bind в JavaScript и как им пользоваться для привязки контекста?
Является ли JavaScript однопоточным или многопоточным языком
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью