@bqio
https://bqio.github.io/

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

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

main.js:
alert($.scene.system); //undefined
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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