Answer

Answer

t.me/js_test

Ответ:

3 1

Объяснение:

Значение ключевого слова this зависит от того, где оно используется. В методе, как и в методе getFoo, ключевое слово this ссылается на объект, которому принадлежит метод. Метод принадлежит объекту bar, поэтому this относится к нему. Когда мы регистрируем this.foo, регистрируется свойство foo объекта bar которое является 3.

С помощью метода call мы можем изменить объект, на который ссылается this. В функциях ключевое слово this относится к объекту, которому принадлежит функция. Мы объявили функцию setTimeout для объекта window, поэтому в функции setTimeout this ссылается на глобальный объект. В глобальном объекте есть переменная с именем foo со значением 1. При регистрации this.foo выводится 1.

Код:

var foo = 1;

setTimeout(() => {
   let foo = 2;

   const bar = {
       foo: 3,
       getFoo(){
           return this.foo;
       }
   }

   console.log(bar.getFoo());
   console.log(bar.getFoo.call(this));
}, 0);

Report Page