//定义一个函数,目的是将参数中的第二个函数所有属性放到第一个参数中,目的是将接口中所有方法放到实现类中
Object.extend=function(destination,source){
for(property in source){
destination[property]=source[property];
}
return destination;
}
//定义一个抽象基类base,无构造函数
function base(){};
//定义一个借口base,base中有一个initialize方法,需要各个实现类来实现
base.prototype={
initialize:function(){
this.oninit();//调用了一个虚方法,后面的实现函数中需要实现此方法
}
}
//实现类一
function SubClassA(){
//构造函数
}
//调用绑定函数Object.extend将base的prototype中需要实现的接口放到匿名对象propInSubClassA中
SubClassA.prototype=Object.extend({
propInSubClassA:"propInSubClassA",
oninit:function(){
alert(this.propInSubClassA);
}},base.prototype);
function SubClassB(){
//构造函数
}
SubClassB.prototype=Object.extend({
propInSubClassB:"propInSubClassB",
oninit:function(){
alert(
this.propInSubClassB);
}},base.prototype);
var objA=new SubClassA();
objA.initialize();
//输出"propInSubClassA"
var objB=new SubClassB();
objB.initialize();
//输出"propInSubClassB"