Задать вопрос
@bqio
https://bqio.github.io/

Почему alert не выводит родительское свойство объекта?

core.js:
Есть объект:
function $() 
{
	this.system = 3;
	this.scene = function(){}.bind(this);
};

main.js:
alert($.scene.system); //undefined
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@tusklozeleniy
Front-end разработчик
Меня больше удивляет, почему undefined, а не TypeError. У $ нет свойства scene. $ - это функция, а не объект. Вот если бы было:
function $() {
  this.system = 3;
  this.scene = function(){}.bind(this);
};
var lol = new $;
alert(lol.scene.system);//undefined


Тогда все было бы понятно, ибо scene, вне зависимости от контекста, остается функцией и не имеет свойств. И даже если использовать new lol.scene, результатом будет пустой объект, ибо оператор new создает новый экземпляр объекта со своим (новым) контекстом, который не имеет свойства system. Как то так
Ответ написан
Комментировать
@emp1re
($.scene) -> вернет console.log( function (){}),
Любая функция это объект, хотя (function (){} == { }) false
{}. system - undefined
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы