Показать сообщение отдельно
  #1 (permalink)  
Старый 14.04.2013, 15:57
Новичок на форуме
Отправить личное сообщение для father_gorry Посмотреть профиль Найти все сообщения от father_gorry
 
Регистрация: 25.05.2012
Сообщений: 8

Есть ли разумное объяснение столь чрезмерной сложности наследования в js?
function Wall(){
	this.color = "red";
}
function Room(){
	this.size = "small";
}
//а теперь я хочу "просто унаследовать объект от объекта", как написано в руководстве.
Room.prototype = Wall;
console.log("Room color", Room.color); //ждем, что будет red, однако оказывается undefined
//Оказывается, нужно поступить намного сложнее
Room.prototype = new Wall(); //Сначала создать экземпляр родителя и связать его с потомком
var room1 = new Room(); //Затем - экземпляр потомка
console.log("room1 color", room1.color); //red. И только теперь оно заработало.


Вывод: нельзя наследовать функцию от функции, можно только экземпляр от функции через другой экземпляр.
Почему сделано так сложно? Неужели авторы языка, когда писали спецификацию, не увидели этого?
Ответить с цитированием