Показать сообщение отдельно
  #1 (permalink)  
Старый 19.11.2012, 13:55
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Прототипное наследование не распространяется на вложенные свойства?
Вот у этой птицы 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().
Ответить с цитированием