Задать вопрос

Почему иногда изменения «родительского» 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 - происходят изменения


Почему так происходит? В чем логика такого поведения?
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой 9 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы