JavaScript'继承':构造函数属性不正确

时间:2011-01-13 03:54:33

标签: javascript constructor

请帮助解释以下结果(在Firefox 3.6上测试)。为什么this.constructor指向A内部原型,如果“this”显然是B型?我觉得字典是从最顶层的原型链遍历,但似乎并非如此:

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

1 个答案:

答案 0 :(得分:0)

var b = new B;
b.constructor == A; // true

因此,您的copy()函数正在创建新的A.但是,如果您添加以下行:

B.prototype.constructor = B;

...你会得到你希望得到的结果。