Почему в одном объекте может быть несколько __proto__? В javascript функции живут отдельно от объектов. Поэтому любой объект может использовать любые функции. При создании функция из конструктора обычно применяется такой способ:function User(name) {
this.name = name;
}
User.prototype.hello = function(who) {
console.log('hello, ' + who.name);
}
Это означает, что при создании экземпляра объекта в его свойство __proto__ записывается ссылка на функцию hello(), которая лежит где-то отдельно. Это понятно.
Но в таком коде:function User(name) {
this.name = name;
}
User.prototype.hello = function(who) {
console.log('hello, ' + who.name);
}
User.prototype.bye = function(who) {
console.log('bye, ' + who.name);
}
эта ссылка __proto__ должна перезаписаться. И в результате созданный объект будет связан только с функцией bye(). Однако этого не происходит и в реальности экземпляр user() может вызывать и hello(), и bye():var petya = new User('Петя');
petya.hello(petya);
petya.bye(petya);
Мне это не понятно, объясните пожалуйстаJSFIDDLE

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

Когда мы определяем методы на прототипе конструктора, каждый метод сохраняется в прототипе объекта. Таким образом, каждый экземпляр объекта будет иметь один и тот же прототип, который содержит все определенные методы.

В вашем примере, когда вы создаете объект petya с помощью конструктора User, ему доступны все методы, определенные на прототипе User, включая hello() и bye(). Это происходит потому, что у каждого экземпляра объекта есть ссылка на один и тот же прототип.

Таким образом, когда вы вызываете методы hello() и bye() на объекте petya, он находит эти методы в его прототипе и успешно выполняет их.

Каждый экземпляр объекта имеет только один прототип, поэтому все методы, определенные на прототипе, доступны для всех экземпляров этого объекта.

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