【发布时间】:2013-12-25 06:03:24
【问题描述】:
我有一个SuperClass“类”,这个类将被SubClassA和SubClassB继承(通过原型链)。然而,虽然继承似乎对SubClassA 有效,但对SubClassB 却失败了。代码如下:
function SuperClass(childCell){
this.childCell = childCell;
this.children = new Array(9);
for(i=0; i<9; i++) {
this.children[i] = new this.childCell();
}
}
function SubClassA(){
this.num = 1;
}
SubClassA.prototype = new SuperClass(SubClassB);
function SubClassB(){
this.num = 2;
}
SubClassB.prototype = new SuperClass(SubClassC);
function SubClassC(){
this.num = 3;
}
var x = new SubClassA();
在这段代码中,我将x 设置为SubClassA 的一个对象,这又应该给我一个包含9 个SubClassB 对象的children 属性。它正确地做到了这一点,但反过来,每个 SubClassB 对象应该包含 9 个 SubClassC 对象。但是,在检查控制台后,我发现没有一个 SubClassB 对象实际上包含它应该通过原型继承的 childCell 或 children 属性。
换句话说,x.children[0] 返回了SubClassB {num: 2},并且没有其他属性。
为什么SubClassA 的继承对SubClassB 不起作用?
【问题讨论】:
标签: javascript oop inheritance prototype