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

Откуда формируется контекст у функции

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

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

Контекст можно потерять, например при передаче метода как коллбэка. Фиксируется через bind или стрелочные функции.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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