Почему в этом случае значением для this является window?

Я не понимаю почему в этом случае значением this будет window (в нестрогом режиме).
function makeUser() {
    return {
        name: "Джон",
        ref: this //window
    };
};

let user = makeUser();
console.log(user.ref); //window


По сути же, когда переменной user передается ссылка на объект, который возвращает функция makeUser, user приобретает такой вид:
let user = {
    name: "Джон",
    ref: this //user
};


Ну и здесь получается, что this находится в контексте выполнения объекта user, а не window.

Тот же learn.js, например:
...значением this во время вызова является объект перед точкой.

Здесь перед точкой - user...
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Значение this кладётся в свойство ref на момент вызова makeUser. Это простое присвоение простой переменной.

Чтобы получать актуальный динамически - надо получать актуальный динамически, например:
function makeUser() {
    return {
        name: "Джон",
        get ref(){
          return this 
        }
    };
};
let user = makeUser();
console.log(user.ref);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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