这个工厂是不是和别人说的工厂模式不太一样呀!所以说是对象工厂。名字只是个符号。
/** *名称:JavaScript 对象工厂 *说明:根据第一参数的类型,创建同类型的对象,并且用其它参数对象的成员通过prototype方法扩展此返回对象. */ function Factory(){ if (0==arguments.length) return null; var args=[].slice.call(arguments,0); var self=args.shift(); switch(self.constructor){ case Function: var factory=function(){ var func=function(){ if (typeof arguments.callee.this =='function') arguments.callee.this.apply(arguments.callee,arguments); } for (var p in this) func[p]=this[p]; return func; } for (var i=0;i<args.length;i++) for (var p in args[i]) factory.prototype[p]=args[i][p]; return new factory(); case Array: case Object: var factory=function(){}; factory.prototype=self; return new factory; case Number: case Boolean: return (self).constructor(self); } } Factory(3); Factory(true); Factory({foo:3}); Factory([{d:3}]); function ff(){}; Factory(ff);