Я не понимаю, почему все используют Boy.prototype = new Human;
для имитации наследования. Смотри, что мы хотим, это функция права? мы можем сделать это без создания нового A (фактически создание нового A дает нам нежелательные результаты в том смысле, что мы на самом деле выполняем функцию создания экземпляров, а это не то, что нам нужно)
Так разве это не лучшее решение?
for (var prop_name in Human.prototype) {
Object.defineProperty(
Boy.prototype,
prop_name,
Object.getOwnPropertyDescriptor(Human.prototype,prop_name)
);
}
Скажем, мы такие особенные и хотим не только перечислимые свойства в Human.prototype, но мы все же могли бы достичь его, используя Object.getOwnPropertyNames
и вызывая его в цепочке прототипов, которая, в свою очередь, доступна нам через Object.getPrototypeOf
.
Так в чем же состоит преимущество Boy.prototype = new Human;
для симуляции наследования, когда у нас есть более подходящие варианты?