请帮忙解释以下结果(在 Firefox 3.6 上测试)。如果“this”显然是B类型,为什么this.constructor指向原型(prototype)内部的A?我幻想字典是从最顶层原型(prototype)链向下遍历的,但这里似乎并非如此:
A=function() {}
A.prototype.copy=function() {
return new this.constructor();
}
B=function() {}
B.prototype=new A();
var b=new B();
var bcopy=b.copy();
var cond1=bcopy.constructor==B // false
var cond2=bcopy.constructor==A // true
最佳答案
var b = new B;
b.constructor == A; // true
因此,您的 copy()
函数正在创建一个新的 A。但是,如果您添加此行:
B.prototype.constructor = B;
...您将得到您希望的结果。
关于JavaScript 'inheritance' : constructor property is not correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4676617/