我是JavaScript的新手,当我有一个带参数的构造函数时,我试图了解继承。
假设我有一个名为Base
的基础对象:
function Base(param1, param2) {
// Constructor for Base that does something with params
}
我想要另一个对象,例如名为BaseChild
的对象,它继承自Base,然后是另一个名为Child
的对象,它继承自BaseChild
。
如何使用基本JavaScript (即没有特殊的插件)为BaseChild
和Child
创建构造函数?
注意:
我认为您可以按如下方式创建BaseChild:
var BaseChild = new Base(param1, param2);
但我在param1
中没有param2
或BaseChild
的值,只有Child
。我希望这是有道理的!。
答案 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);