JS构造函数问题
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,这段代码又有什么用呢?因为不管赋值与否对后面的运行是没有妨碍的啊?求大神们详细解释。
------解决方案--------------------B.prototype = new A();
//其实就是模拟继承
B.prototype.constructor=B;
//因为每个构造职数的prototype属性中有一个 constructor属性指回构造函数本身
//因为上面的操作,这个 constructor已经变掉了(指向了 A函数),现在要把他变回来
------解决方案--------------------B.prototype = new A()-----将A的实例保存到b的原型中去,意思是你以后就不用用一次就去new一次对象了,就直接可以从b的原型中得到
------解决方案--------------------function B(x,y)
{
B.prototype.y = y;
A.call(this,x);//模拟继承A
B.prototype.ShowB = function(){ alert("B的Show方法!"); };
}