带有参数的构造函数的JavaScript继承

时间:2013-08-07 09:08:23

标签: javascript inheritance constructor

我是JavaScript的新手,当我有一个带参数的构造函数时,我试图了解继承。

假设我有一个名为Base的基础对象:

function Base(param1, param2) {
   // Constructor for Base that does something with params
}

我想要另一个对象,例如名为BaseChild的对象,它继承自Base,然后是另一个名为Child的对象,它继承自BaseChild

如何使用基本JavaScript (即没有特殊的插件)为BaseChildChild创建构造函数?


注意:

我认为您可以按如下方式创建BaseChild:

var BaseChild = new Base(param1, param2);

但我在param1中没有param2BaseChild的值,只有Child。我希望这是有道理的!。

1 个答案:

答案 0 :(得分:1)

// define the Base Class
function Base() {
   // your awesome code here
}

// define the BaseChild class
function BaseChild() {
  // Call the parent constructor
  Base.call(this);
}

// define the Child class
function Child() {
  // Call the parent constructor
  BaseChild.call(this);
}


// inherit Base
BaseChild.prototype = new Base();

// correct the constructor pointer because it points to Base
BaseChild.prototype.constructor = BaseChild;

// inherit BaseChild
Child.prototype = new BaseChild();

// correct the constructor pointer because it points to BaseChild
Child.prototype.constructor = BaseChild;

使用 Object.create

的替代方法
BaseChild.prototype = Object.create(Base.prototype);
Child.prototype = Object.create(BaseChild.prototype);