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

От чего зависит this

Вопрос

От чего зависит значение this внутри обычной (не стрелочной) функции?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: От способа вызова: new, call/apply/bind, obj.f() или f(). Для обычных функций this определяется в момент вызова.

Варианты ответа

  1. От места, где функция объявлена в коде, как у стрелочных функций
  2. От объекта, в литерале которого функция была написана изначально
  3. От способа вызова: new, call/apply/bind, obj.f() или f()правильный ответ
  4. Всегда равно глобальному объекту, если явно не использовать bind

Разбор

Для обычных функций this определяется в момент вызова. Правила по приоритету: new даёт новый объект, явная привязка даёт переданный объект, вызов как метод даёт объект слева от точки, обычный вызов даёт undefined в строгом режиме и глобальный объект в нестрогом. От места объявления this зависит только у стрелочных функций. Литерал объекта ничего не привязывает: метод, вынутый из объекта, теряет this. «Всегда глобальный объект» неверно и для методов, и для строгого режима.

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

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