function A(x) 

    A.prototype.x = x; 
    A.prototype.ShowA = function(){ alert("A的Show方法!"); };
} function B(x,y)
{
    B.prototype.y = y;
    A.call(this,x);
    B.prototype.ShowB = function(){ alert("B的Show方法!"); };
}B.prototype = new A();
B.prototype.constructor=B;var obj = new B(10,5);
alert(obj.x);
alert(obj.y);
obj.ShowA();
obj.ShowB();在这段代码中B.prototype = new A();是什么意思?是把函数对象A保存到B.prototype这个属性里面嘛?保存之后B.prototype.constructor这个值应该是函数A里面的内容,在把这个内容赋值给函数B,这段代码又有什么用呢?因为不管赋值与否对后面的运行是没有妨碍的啊?求大神们详细解释。

解决方案 »

  1.   

    B.prototype = new A(); 
    //其实就是模拟继承B.prototype.constructor=B;
    //因为每个构造职数的prototype属性中有一个 constructor属性指回构造函数本身
    //因为上面的操作,这个 constructor已经变掉了(指向了 A函数),现在要把他变回来
      

  2.   

    B.prototype = new A()-----将A的实例保存到b的原型中去,意思是你以后就不用用一次就去new一次对象了,就直接可以从b的原型中得到
      

  3.   

    function B(x,y)
    {
      B.prototype.y = y;
      A.call(this,x);//模拟继承A
      B.prototype.ShowB = function(){ alert("B的Show方法!"); };
    }