使用Object.defineProperty定义的属性的Javascript继承

时间:2015-03-03 14:33:10

标签: javascript inheritance 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 个答案:

答案 0 :(得分:3)

  

我试图通过添加类似Child.prototype = Object.create(Parent.prototype);

的内容来应用继承

是的,您应该这样做,在.prototype个对象之间创建原型链。你有自己定义的方法,不是吗?

  

如何从Parent类继承,以便我可以使用属性id和name。

你基本上需要一个" super"调用Parent构造函数,以便在Child个实例上设置属性:

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