@ironmansl

Вопросы о прототипном наследовании?

Изучаю прототипное наследование по нескольких ресурсах. И у меня возникло несколько вопросов:
Вопрос №1:
Как правильно написать определение:
1) Прототипное наследование-это когда прототип наследует свойства у другого объекта.
2) Прототипное наследование--это когда объект наследует свойства у прототипа.
Какой вариант правильный?

Вопрос №2:
какой здесь обьект прототип?

let animal = {
  eats: true
};
let rabbit = {
  jumps: true
};
rabbit.__proto__ = animal;


и какой здесь обьект прототип?
let point = {
  x: 10,
  y: 20,
};
 
let point3D = {
  z: 30,
  __proto__: point,
};
 
console.log(
  point3D.x, // 10
  point3D.y, // 20
  point3D.z  // 30
);


Вопрос №3:

Я так понял что создать (задать явно) прототип можно двумя способами:
object__proto__ = прототип
или так:
Оbject.create(прототип);

А что такое тогда в коде выше?:
__proto__: point
И в каких случаях его используют?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
1. 2 вариант
2.
4.3.5prototype - object that provides shared properties for other objects
соответственно point и animal прототипы.
3. между object.__proto__ = x и object = { __proto__: x} нет никакой разницы относительно результата. Еще прототип устанавливает оператор new. const v = new x ///v.__proto__ === x.prototype
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta
инженер
Геттер/сеттер __proto__ считается не рекомендуемым к использованию, вместо него предлагается брать Object.getPrototypeOf / Object.setPrototypeOf или тож самое от Reflect.
Разницы в общем нет, но раз сказали deprecated пусть так и будет :)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
До 170 000 руб.
IT IS Kernel Новосибирск
от 100 000 руб.
Индустрия Москва
от 200 000 до 250 000 руб.
16 сент. 2019, в 19:16
50000 руб./за проект
16 сент. 2019, в 18:39
2000 руб./за проект
16 сент. 2019, в 18:30
3000 руб./за проект