您的位置:首页 > Web前端 > JavaScript

javascript实现继承的多种方式

2009-06-02 09:38 639 查看
对象冒充

function ClassA(sColor){

this.color=sColor;

this.sayColor=function(){

window.alert(this.color);

};

}



function ClassB(sColor,sName){

this.newMethod=ClassA;

this.newMethod(sColor);

delete this.newMethod;



this.name=sName;

this.sayName=function(){

window.alert(this.name);

};

}



var objA=new ClassA("red");

var objB=new ClassB("blue","Nicholas");

objA.sayColor();

objB.sayColor();

objB.sayName();







call方法

function ClassA(sColor){

this.color=sColor;

this.sayColor=function(){

window.alert(this.color);

};

}



function ClassB(sColor,sName){

ClassA.call(this,sColor);



this.name=sName;

this.sayName=function(){

window.alert(this.name);

};

}



var objA=new ClassA("red");

var objB=new ClassB("blue","Nicholas");

objA.sayColor();

objB.sayColor();

objB.sayName();







apply方法

function ClassA(sColor){

this.color=sColor;

this.sayColor=function(){

window.alert(this.color);

};

}



function ClassB(sColor,sName){

//ClassA.apply(this,new Array(sColor));

ClassA.apply(this,arguments);



this.name=sName;

this.sayName=function(){

window.alert(this.name);

};

}



var objA=new ClassA("red");

var objB=new ClassB("blue","Nicholas");

objA.sayColor();

objB.sayColor();

objB.sayName();









混合模式

function ClassA(sColor){

this.color=sColor;

}



ClassA.prototype.sayColor=function(){

window.alert(this.color);

};



function ClassB(sColor,sName){

ClassA.call(this,sColor);

this.name=sName;

}



ClassB.prototype=new ClassA();



ClassB.prototype.sayName=function(){

window.alert(this.name);

};



var objA=new ClassA("red");

var objB=new ClassB("blue","Nicholas");

objA.sayColor();

objB.sayColor();

objB.sayName();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: