Почему иногда изменения «родительского» prototype влияют на изменение «дочернего» prototype, а иногда нет?

Почему иногда изменения "родительского" св-ва prototype функции-конструктора влияют на изменение prototype объекта-экземпляра, которое содержится в __proto__, а иногда нет?

То есть тут изменения "родительского" prototype никак не сказываются на "дочернем" prototype экземпляра:
function Rabbit() {}
Rabbit.prototype = {
  eats: true
};

var rabbit = new Rabbit();

Rabbit.prototype = {};

alert( rabbit.eats ); //true - все работает без изменений


А тут происходит изменение "родительского" свойства - меняется "дочернее" свойство:
function Rabbit(name) {}
Rabbit.prototype = {
  eats: true
};

var rabbit = new Rabbit();

Rabbit.prototype.eats = false;

alert( rabbit.eats ); //false - происходят изменения


Почему так происходит? В чем логика такого поведения?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы