对象冒充
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();
本文介绍了一种在JavaScript中实现对象冒充的方法,通过构造函数ClassA和ClassB演示了使用call、apply及原型继承的不同方式来实现对象属性和方法的共享。
910

被折叠的 条评论
为什么被折叠?



