看了一段继承的代码
function MyClass(x) {
    this.x = x;
}
var proObj = new MyClass('x');
InheritClass.prototype = proObj;
MyClass.prototype.protox = 'xxx';       
function InheritClass(y) {
    this.y = y;
}           
var obj = new InheritClass('Hello class');
MyClass.prototype.protox = 'changed';
proObj.x = 'Changed Too';
alert(obj.protox);
alert(obj.x);我不理解的是alert(obj.x);这个弹出的是Changed Too,这是为什么呀?我认为应该是弹出一个未定义才对啊,毕竟x属性又不是MyClass.prototype这个中的属性值,我试了alert(MyClass.prototype.x);这个弹出的是unfined,为什么这里会弹出Changed Too呢?

解决方案 »

  1.   


    var proObj = new MyClass('x');
    //proObj 是MyClass的一个实例。InheritClass.prototype = proObj;
    //InheritClass 继承了proObj这个实例,也就继承了MyClass的属性x。proObj.x = 'Changed Too';
    //proObj的x改变为'Changed Too'
    //因为InheritClass 是继承了proObj,所以InheritClass的x是来自proObjvar obj = new InheritClass('Hello class');
    //obj 是InheritClass的实例,当然也就有属性x的值alert(obj.x);
    //所以弹出的是Changed Too个人理解,不知道是否正确,等大侠来指点。