Мои задачи по Javascript
Случайная задача
Список всех задач

Задача 34

let showX;
let x = 1;

let obj1 = {
  x: 2,
  func: function() {
     showX = () => { return this.x; }
   }
};

obj1.func();

let obj2 = {
  x: 3,
  z: showX
};

console.log (obj2.z());
Что выведет консоль?
1
2
3
4
5
← Задача 33Задача 35 →
Пояснение Запустив obj1.func();, в глобальную let-переменную showX записалась ссылка на функцию, причём стрелочную. А любая стрелочная функция навсегда сохраняет в this то значение, которому было равно this в лексическом окружении, в котором функция была создана. Даже "скопировав" стрелочную функцию в другую переменную, this будет тот же, что при создании.

Для нашей стрелочной функции значением this всегда будет объект obj1, даже если её вызывать на другом объекте.



Написать сообщение - отзыв, пожелание и т.п.