对象冒充
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();