vashurin
да именно столько будет сколько он захочет
фигня с public.legs получается потому что объект передаётся по ссылке, а не создаётся заново
повтор твоего кода:
var Animal = function(){
(this.public = {}).legs = 0;
};
Animal.prototype.setLegs = function(n){
this.public.legs = n;
}
Animal.prototype.getLegs = function(){
return this.public.legs;
}
var bird = new Animal();
bird.setLegs(2);
console.log(bird.getLegs());
var dog = new Animal();
dog.setLegs(4);
console.log(dog.getLegs());