关于Js中的继承实现,为什么要使用父类的call方法?
请看代码,问题用红字标出,请给予解惑,万分感谢!function ClassA(sColor)//父类
{
this.color=sColor;
}
ClassA.prototype.sayColor=function()//类方法
{
alert(this.color);
}
function ClassB(sColor,sName)//子类
{
//this.newMethod=ClassA;
//this.newMethod(sColor);
//delete this.newMethod;
//以上三行与该语句等价 ClassA.call(this,sColor);但是为什么要调用它们?
//问题出在这里 书上说 需要在这里调用ClassA.call(this,sColor);也就是 调用父类的构造方法,请问这样有什么用呢?
//如果是需要为子类的对象的属性赋值,那么直接 this.属性=值 就可以了,为什么要调用父类的构造方法呢?
//这不是多此一举吗?之后调用ClassB.prototype=new ClassA(); 这不是就用使得子类的原型被赋值为父类的对象,这样
//就实现了继承了啊,为什么要之前那些语句呢?
this.color=sColor;
this.name=sName;
}
ClassB.prototype=new ClassA();//实现继承
ClassB.prototype.sayName=function()//子类的类方法
{
alert(this.name);
}
var objA=new ClassA("red");
var objB=new ClassB("blue","Bill");
objA.sayColor();
objB.sayColor();
objB.sayName();
[ 本帖最后由 hellenism 于 2010-5-23 14:42 编辑 ]