0

Почему во втором варианте, в котором мы присваиваем и сразу вызываем метод, this равно window?

let user = {
  sayHi: function() {
    console.log(this)
  }
};

user.sayBye = user.sayHi;
user.sayBye(); // this = user



let user1 = {
  sayHi: function() {
    console.log(this) 
  }
};

(user1.sayBye = user1.sayHi)(); // this = window
  • 1
    Был недавно такой вопрос. Сводится всё к тому, что во втором случае вызывается результат присваивания, которым является сама функция, без привязки к объекту user1. Выходит то же самое, что и в случае let func = user1.sayHi; func(); – Regent Jan 26 '18 at 11:01
  • Спасибо, понятно – Ivan Testovich Jan 26 '18 at 11:32

0 Answers0