您的位置:无忧脚本
» winter的个人空间
» 日志
Group
上一篇 /
下一篇 2007-03-28 18:00:16
/ 个人分类:private
|
<scrīpt language="javascrīpt"> function FunctionArray() { var functions=new Array(); var FA=function (){ for(var i=0;i<functions.length;i++){ if(functions[i] instanceof Function)functions[i](); } } FA.AddFunction=function(newFunction){ if(newFunction instanceof Function) { for(var i=0;i<functions.length;i++){ if(functions[i]==newFunction)return; } functions.push(newFunction); } } FA.RemoveFunction=function(theFunction){ for(var i=0;i<functions.length;i++){ if(functions[i]==theFunction)functions.splice(i,1); } } return FA; } function Template_Group(Class) { if(!Class)Class=Object; var prototype=new Class(); return function() { var g=new Array(); this.add=function(newElement) { if(newElement.constructor==Class) { for(var i=0;i<g.length;i++) { if(g[i]==newElement)return; } g.push(newElement); } } this.remove=function(theElement) { for(var i=0;i<g.length;i++) { for(var i=0;i<g.length;i++) { if(g[i]==newElement)g.slice(i,1); } } } for(var p in prototype) { if(prototype[p].apply) { this[p]=function() { var m=p; return function() { if(g.length) { o=g[0][m].apply(g[0],arguments); if(!(o instanceof Object)) { for(var i=1;i<g.length;i++) { g[i][m].apply(g[i],arguments); } return; } var r=new (new Template_Group(g[0][m].apply(g[0][m],arguments).constructor)); r.add(o); for(var i=1;i<g.length;i++) { r.add(g[i][m].apply(g[i],arguments)); } return r; } } }() } } } } function ClassA() { this.constructor=ClassA; this.v="!!"; this.run=function(){ alert(this.v); } this.clone=function(){ var r=new ClassA(); r.v=this.v; return r; } } var a=new ClassA(); var b=new ClassA(); var ClassAGroup=new Template_Group(ClassA); var ag=new ClassAGroup(); a.v="a"; b.v="b"; ag.add(a); ag.add(b); var ag2=ag.clone().clone().clone(); ag2.run();
</scrīpt> |
导入论坛
收藏
分享给好友
推荐到圈子
管理
举报
TAG:
private