Вот у этой птицы 2 ноги. Ясно, как работает наследование.
var Animal = function(){};
Animal.prototype = {
legs: 0
};
var bird = new Animal();
bird.legs = 2;
var dog = new Animal();
dog.legs = 4;
console.log(bird.legs);
jsfiddle
А у этой птицы 4 ноги. Интуитивно непонятно.
var Animal = function(){};
Animal.prototype = {
public: {
legs: 0
}
};
var bird = new Animal();
bird.public.legs = 2;
var dog = new Animal();
dog.public.legs = 4;
console.log(bird.public.legs);
jsfiddle
Получается, что наследование распространяется только на свои свойства, и не распространяется на вложенные. Понятно, что за фигурными скобками скрывается код типа new Object().