Почему этот код работает именно так? Я правильно понимаю? При создании rabbit, в его __proto__ будет записана ссылка на объект Rabbit.prototype?function Rabbit() {
Rabbit.prototype =
eats: tru
}
var rabbit = new Rabbit()
Rabbit.prototype = {}; //
alert( rabbit.eats )
Почему при перезаписи этого объекта на пустой объект, алер выводит true? ведь __proto__ ссылаеться на уже пустой объектfunction Rabbit(name) {
Rabbit.prototype =
eats: tru
}
var rabbit = new Rabbit()
Rabbit.prototype.eats = false
alert( rabbit.eats )
А в этом моменте, мы просто меняем свойство объекта на который ссылается __proto__ rabbit, и все работает как нужно. (выводит false
Так в чём разница?

21 Авг 2019 в 07:00
153 +1
0
Ответы
1

В первом случае, при создании объекта rabbit, его прототипом становится объект Rabbit.prototype, который имеет свойство eats равное true. Затем, когда мы перезаписываем прототип Rabbit.prototype на пустой объект {}, это не влияет на прототип объекта rabbit, который уже был создан.

Во втором случае, когда мы меняем значение свойства eats непосредственно в объекте Rabbit.prototype, это изменение также отражается на объекте rabbit, потому что он продолжает ссылаться на измененный прототип.

Таким образом, в первом случае мы меняем сам прототип объекта, а во втором случае мы изменяем свойство объекта на который ссылается прототип, что приводит к различному поведению при выводе значения свойства eats.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 663 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир