Javascript наследование свойств, определенных с помощью Object.defineProperty

У меня есть следующий родительский класс...

function Parent(id, name, parameters) {
  Object.defineProperty(this, "id", {
    value: id
  });

  Object.defineProperty(this, "name", {
    value: name,
    writable: true
  });
};

и соответствующий дочерний класс:

function Child(id, name, parameters) {
  Object.defineProperty(this, "phone", {
    value: parameters.phone,
    writable: true
  });
};

Я попытался применить наследование, добавив что-то вроде Child.prototype = Object.create (Parent.prototype);, но это, очевидно, не работает.

Как я могу наследовать от класса Parent таким образом, чтобы я мог использовать свойства id и name.

1 ответ

Решение

Я пытался применить наследование, добавив что-то вроде Child.prototype = Object.create(Parent.prototype);

Да, вы должны сделать это, чтобы создать цепочку прототипов между вашими .prototype объекты. У вас есть определенные методы, не так ли?

Как я могу наследовать от класса Parent таким образом, чтобы я мог использовать свойства id и name.

Вам в основном нужен "супер" вызов на Parent конструктор, так что он устанавливает ваши свойства на Child экземпляры:

function Child(id, name, parameters) {
  Parent.call(this, id, name, parameters);
  Object.defineProperty(this, "phone", {
    value: parameters.phone,
    writable: true
  });
}
Другие вопросы по тегам