如何从继承对象中调用超级构造函数?例如,我有一个简单的动物'类':
function Animal(legs) {
this.legs = legs;
}
我想创建一个继承自Animal的'Chimera'类,但将腿数设置为随机数(在构造函数中提供最大腿数。到目前为止,我有这个:
function Chimera(maxLegs) {
// generate [randLegs] maxed to maxLegs
// call Animal's constructor with [randLegs]
}
Chimera.prototype = new Animal;
Chimera.prototype.constructor = Chimera;
如何调用Animal的构造函数?感谢
答案 0 :(得分:4)
我认为你想要的是constructor chaining:
function Chimera(maxLegs) {
// generate [randLegs] maxed to maxLegs
// call Animal's constructor with [randLegs]
Animal.call(this, randLegs);
}
或者您可以考虑Parasitic Inheritance
function Chimera(maxLegs) {
// generate [randLegs] maxed to maxLegs
// ...
// call Animal's constructor with [randLegs]
var that = new Animal(randLegs);
// add new properties and methods to that
// ...
return that;
}
答案 1 :(得分:2)
您可以使用每个函数的call
方法:
function Chimera(maxLegs) {
var randLegs = ...;
Animal.call(this, randLegs);
}
答案 2 :(得分:-2)
你应该可以这样做:
new Animal();