Как определяется this
Вопрос
От чего зависит значение this в функции? Перечисли все правила.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
определяется в момент вызова, а не объявления
обычный вызов - undefined в strict, globalThis без strict
метод объекта - сам объект (то, что слева от точки)
call/apply/bind задают явно
new - новый создаваемый объект
стрелочная функция не имеет своего this, берёт из внешней области
Что могут спросить следом
- Что будет, если передать метод объекта как колбэк без bind
- Почему стрелка в методе объекта ломает доступ к полям
- Что такое потеря контекста и как её чинят
Разбор
this у обычной функции определяется в момент вызова. Правила по приоритету:
new → явная привязка call/apply/bind → вызов как метода (то, что слева от точки) →
обычный вызов (undefined в строгом режиме, globalThis без него).
Стрелочная функция своего this не имеет вообще - она берёт его лексически, из места
объявления, и bind на неё не действует. Поэтому колбэки в React-классах писали стрелками,
а метод объекта стрелкой писать нельзя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.