Показать сообщение отдельно
  #14 (permalink)  
Старый 15.04.2013, 12:02
Интересующийся
Отправить личное сообщение для Aves Посмотреть профиль Найти все сообщения от Aves
 
Регистрация: 14.12.2011
Сообщений: 12

Сообщение от 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'}}
Ответить с цитированием