Сообщение от father_gorry
|
Почему наследования не происходит? Я проверил, скрипт не создает ошибок.
var Wall = new function(){
this.color = "red";
}
var Room = new function(){
this.size = "small";
}
Room.prototype = Wall; //объявляем, что Room наследуктся от Wall
Room.prototype.color="white"; //можно задать через Wall.color - будет то же самое.
console.log(Room.prototype.color, Wall.color); //Проверили, действительно так.
console.log(Room.color); //Undefined! Опа. Наследования не произошло.
|
Потому что код бессмысленный. Если опустить тонкости, то можно сказать, что у объектов нет прототипов, у них есть конструкторы. Прототипы устанавливаются у конструкторов. А вы у объекта Room сами создаете свойство prototype, а ничего не "объявляете". Оно к прототипам и наследованию никакого отношения не имеет, просто назвали вы его так же. То что у вас написано можно записать короче, заменив название prototype на obj например:
var Wall = {color:'red'};
var Room = {size:'small', obj: Wall}; //{size:'small', obj: {color:'red'}}