javascript – 原型继承. obj-> C-> B-> A,但是obj.constructor是A.为什么?

前端之家收集整理的这篇文章主要介绍了javascript – 原型继承. obj-> C-> B-> A,但是obj.constructor是A.为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var print = function(text){
  document.write(text);
  document.write("</br>");
}

var A = function(){
}
A.prototype.name="A";

var B = function(){
}
B.prototype = new A();
B.prototype.name="B";

var C = function(){
}
C.prototype = new B();
C.prototype.name="C";

obj = new C();
print(obj.name);
print(obj.constructor.prototype.name);
print(obj.constructor == A);

代码提供下一个输出

C
A
true

为什么这里的obj.constructor是A而不是C?

解决方法

this code sample所示,在使用继承时必须手动重置.constructor属性,或者在调用new A()或new B()时重写构造函数
B.prototype = new A();
B.prototype.constructor = B; // need this line to fix constructor with inheritance

这是一个工作样本:http://jsfiddle.net/93Msp/.

希望这可以帮助!

猜你在找的JavaScript相关文章