Добрый день, снова запутался с прототипами.
obj.__proto__ - это [Prototype] текущего объекта
obj.prototype - это [Prototype] объекта который будет создан через new
Но почему не наследуются не статические свойства и методы при "ручном" наследовании:
class A {
static foo = () => 'foo';
bar = () => 'bar';
}
class B {}
Object.setPrototypeOf(B, A); // устанавливаем B.__proto__ = A, тем самым наследуем статические св-ва и методы
Object.setPrototypeOf(B.prototype, A.prototype); // устанавливаем B.prototype.__proto__ = A.prototype, тем самым наследуем не статические св-ва и методы
Но, наследуются только статические св-ва и методы.
const b = new B();
console.log(B.foo());
console.log(b.bar()); // Uncaught TypeError: b.bar is not a function
Что я делаю не так?
Скорее всего я что-то не правильно понял в прототипном наследовании, но уже раза 3 перечитал learn.javascript.ru разделы о прототипах, и ничего не изменилось