Встречается на собеседованиях • сегодня

Как возникает контекст у функции

Контекст функции (значение this) определяется в момент её вызова и зависит от способа вызова:

  1. Простой вызов - this будет undefined (strict mode) или глобальный объект (не strict mode)
javascript
function foo() { console.log(this) }
foo() // window (или undefined в strict mode)
  1. Метод объекта - this ссылается на объект перед точкой
javascript
obj.method() // this = obj
  1. Явное указание - через call/apply/bind
javascript
func.call(context, ...args)
  1. Конструктор (new) - this ссылается на новый созданный объект
javascript
new Foo() // this = новый экземпляр Foo
  1. Стрелочные функции - не имеют своего this, берут его из окружающего контекста

Контекст можно потерять, например при передаче метода как колбэка:

javascript
setTimeout(obj.method) // контекст потеряется
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы