温故而知新--ECMAScript and javascript基础二

来源:互联网 发布:jo平台抢购软件 编辑:程序博客网 时间:2024/05/15 05:53

ECMA多重继承支持:

 

function ClassX(){
this.messageX="This is the X message.";

if(typeof ClassX._initialized=="undefined"){

ClassX.prototype.sayMessageX
=function(){
alert(
this.messageX);
}
;

ClassX._initialized
=true;
}

}


function ClassY(){
this.messageY="This is the Y message.";

if(typeof ClassY._initialized=="underfined"){

ClassY.prototype.sayMessageY
=function(){
alert (
this.messageY);
}
;

ClassY._ini8tiaized
=true;
}

}

ClassX和ClassY类都是小类,都只有一个属性和一个方法。假设现有ClassZ类,需要继承者两个类。如下:

 

function ClassZ(){
ClassX.apply(
this);
ClassY.apply(
this);
this.message="This is thie Z message.";

if(typeof ClassZ._initialized=="undefined"){
ClassZ.prototype.inheritFrom(ClassX);
ClassZ.prototype.inheritFrom(ClassY);

ClassZ.prototype.sayMessageZ
=function(){
alert(
this.messageZ);
}
;

ClassZ._initialized
=true;
}

}

注意继承属性的两行代码(使用apply()方法)和继承方法的两行代码(使用inheritFrom()方法)。继承的顺序非常重要。测试代码如下:

 

var objZ=new ClassZ();
objZ.sayMessageX();      
//outputs "This is X message."
objZ.sayMessageY();      //outputs "This is Y message."
objZ.sayMessageZ();      //outputs "This is Z message."