假设我有以下对象函数:
function A(options){
...
}
然后我想创建一个继承A&B的原型的新函数(B)。 这些是我正在寻找的条件:
B应如下所示:
功能B(aOptions,bOptions){...}
var b = new B({}, {})
答案 0 :(得分:7)
只需使用A
this
构造函数即可
function B(aOptions, bOptions) {
A.call(this, aOptions);
// do stuff with bOptions here...
}
现在设置原型
B.prototype = Object.create(A.prototype, {
constructor: {
value: B
}
});
现在B将拥有A的原型方法。
添加到B&B的原型中的任何新方法不可用于A&#39的原型
还有其他一些调整可以让你的生活更轻松。
function A(options) {
// make `new` optional
if (!(this instanceof A)) {
return new A(options);
}
// do stuff with options here...
}
为B
做同样的事function B(aOptions, bOptions) {
// make `new` optional
if (!(this instanceof B)) {
return new B(aOptions, bOptions);
}
// call parent constructor
A.call(this, aOptions);
// do stuff with bOptions here...
}
现在,您可以致电A(options)
或new A(options)
以获得相同的结果。
与B相同,B(aOptions, bOptions)
或new B(aOptions, bOptions)
会得到相同的结果。