> Какие способы передачи контекста исполнения функции существуют в JavaScript? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: RecruitTech, TYMY

Стек: JavaScript

> Пример ответа

В JavaScript контекст исполнения функции (значение this) можно передать несколькими способами:

  1. Неявная передача через вызов метода - this ссылается на объект, перед точкой: obj.method().

  2. Явная привязка через call и apply - первый аргумент задаёт this, остальные - параметры функции:

    • func.call(context, arg1, arg2)

    • func.apply(context, [arg1, arg2])

  3. Жёсткая привязка через bind - создаёт новую функцию с навсегда зафиксированным this:

    • const boundFunc = func.bind(context)
  4. Контекст стрелочных функций - они не имеют собственного this, а наследуют его из внешнего лексического окружения (где были объявлены).

  5. Контекст через new - при вызове функции с new создаётся новый объект, который становится this.

  6. Глобальный контекст - в нестрогом режиме this в обычной функции ссылается на глобальный объект (window в браузере), в строгом - undefined.

Примеры:

JAVASCRIPT
function show() { console.log(this.name); }
const obj = { name: 'Alice' };
// call/apply
show.call(obj); // Alice
show.apply(obj); // Alice
// bind
const bound = show.bind(obj);
bound(); // Alice
// стрелочная функция
const arrow = () => console.log(this.name);
arrow.call(obj); // this берётся из внешней области, не из call

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью