javascript设计模式交流
2010-09-14 13:17:22 来源:WEB开发网后面补上UML图 gif版和visio版
visio版:prototype.rar
Templete Method是一个相对简单的模式,在父类中一个 多态地调用子类方法的方法 被称为Templete Method,在js中,因为缺少必要的接口检查和虚方法,不能够简单地使用C++或者Java的方式实现,但通过js的scope chain的灵活应用,可以更为优美地实现这一模式。
在js中,有一种非常有趣的继承方式:元类。尽管语言级别未提供支持,但是first class的函数和动态语言特性使得js能更为彻底地实现元类继承。首先,大概介绍下下元类继承的方式:
Code:
functionparent(string){
varchild=newFunction("this.x=10;"+string);
returnchild;
}
varchild=newparent("this.y=20;");
varchildObj=newchild();
alert(childObj.y);
以某种方式创建一个函数,并将之返回,这就是js版的元类继承。作为扩展,可以不使用Function创建函数,parent为子类提供参数
Code:
functionparent(n){
returnfunction(){
this.show=function(){
alert(n);
}
};
}
varchild=newparent(20);
varchildObj=newchild();
childObj.show();
如果你认为这不能算作继承的话,那么下面一段代码可以展现这种继承的灵活性:
Code:
functionparent(prototype){
returnfunction(){
this.show=function(){
alert("show");
}
for(varpinprototype)this[p]=prototype[p];
};
}
Tags:javascript 设计模式 交流
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接