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. И только теперь оно заработало.
Вывод: нельзя наследовать функцию от функции, можно только экземпляр от функции через другой экземпляр.
Почему сделано так сложно? Неужели авторы языка, когда писали спецификацию, не увидели этого?