具体功能运行后看效果 添加f1添加f2添加f3 移除f1移除f2移除f3 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; } img1.onclick=FunctionArray(); function f1() { output.innerHTML+="f1 runs!! "; } function f2() { output.innerHTML+="f2 runs!! "; } function f3() { output.innerHTML+="f3 runs!! "; } [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] Function.prototype.concat = function() { var funcs = [this].concat(Array.apply([], arguments)); return function(){ var ret = []; for(var i = 0; i < funcs.length; i++) { var func = funcs[i] instanceof Function ? funcs[i] : new Function(funcs[i]); ret.push(func.apply(this, arguments)); } return ret; } } var a = new Function("return 0"); a=a.concat(function(){return 1}, function(){return 2}, function(){return 3}); alert(a()); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 顺便贴上winter以前写的东西 winte有空的时候快来帮我加点注释 我加不动了…… <!-- function Template_Group(Class) { //这个类型直接对类型进行操作,它的参数是一个类型 //所以根据前面的定义,它是一个"元类" if(!Class)Class=Object; var prototype=new Class(); return function() { var g=new Array(); //add方法用来向集合中添加元素 this.add=function(newElement) { if(newElement.constructor==Class) { for(var i=0;i<g.length;i++) { if(g[i]==newElement)return; } g.push(newElement); } } //remove方法用来将集合元素移除 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) { var o=g[0][m].apply(g[0],arguments); if(!(o instanceof Object)) { var r=new Array(); for(var i=1;i<g.length;i++) { r.push(g[i][m].apply(g[i],arguments)); } return r; } else { 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; } } } }() } } } } --> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 一个功能更强大的