@Rapen

Почему this undefined?

Почему, если создать метод в скобах и присвоить ему из другого метода код и вызвать, получается window? А не obj?
var obj = {
  method: function() {
    alert(this);
  }
};
(obj.newMethod = obj.method)() //window
  • Вопрос задан
  • 3230 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Потому что так работает javascript: this - это текущий контекст выполнения, а не контекст, в котором объявлен какой-то метод.
Вот так будет результат, который вы ожидаете: (obj.newMethod = obj.method).bind(obj)()

Здесь именно ваш случай рассмотрен: Доступ к объекту через this
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nazares
@nazares
Software Engineer
потому что alert это Window method
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы