Вернуться к уроку

Значение this в объявлении объекта

важность: 5

Что выведет alert в этом коде? Почему?

var user = {
  firstName: "Василий",

  export: this
};

alert( user.export.firstName );

Ответ: undefined.

var user = {
  firstName: "Василий",

  export: this // (*)
};

alert( user.export.firstName );

Объявление объекта само по себе не влияет на this. Никаких функций, которые могли бы повлиять на контекст, здесь нет.

Так как код находится вообще вне любых функций, то this в нём равен window (в браузере так всегда для кода вне функций, вне зависимости от use strict).

Получается, что в строке (*) мы имеем export: window, так что далее alert(user.export.firstName) выводит свойство window.firstName, которое не определено.