Ответ вслух Junior this, call, apply, bind спрашивают часто обновлено

Как определяется this

Вопрос

От чего зависит значение this в функции? Перечисли все правила.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

this у обычной функции определяется в момент вызова. Правила по приоритету: new → явная привязка call/apply/bind → вызов как метода (то, что слева от точки) → обычный вызов (undefined в строгом режиме, globalThis без него).

Что должно прозвучать в ответе

  • определяется в момент вызова, а не объявления

  • обычный вызов - undefined в strict, globalThis без strict

  • метод объекта - сам объект (то, что слева от точки)

  • call/apply/bind задают явно

  • new - новый создаваемый объект

  • стрелочная функция не имеет своего this, берёт из внешней области

Что могут спросить следом

  • Что будет, если передать метод объекта как колбэк без bind
  • Почему стрелка в методе объекта ломает доступ к полям
  • Что такое потеря контекста и как её чинят

Разбор

this у обычной функции определяется в момент вызова. Правила по приоритету: new → явная привязка call/apply/bind → вызов как метода (то, что слева от точки) → обычный вызов (undefined в строгом режиме, globalThis без него).

Стрелочная функция своего this не имеет вообще - она берёт его лексически, из места объявления, и bind на неё не действует. Поэтому колбэки в React-классах писали стрелками, а метод объекта стрелкой писать нельзя.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.