//判断数据类型 Type = {}; for(var i=0,type;type=['String','Array','Number'][i++];){ (function(type){ Type['is'+type] = function(obj){ return Object.prototype.toString.call(obj) === '[object '+type+']'; } })(type) } console.log('type',Type.isArray([])); //动态植入方法 Function.prototype.before = function(beforefn){ var _self = this; return function(){ beforefn.apply(this,arguments); return _self.apply(this.arguments); } } Function.prototype.after = function(afterfn){ var _self = this; return function(){ var ret = _self.apply(this.arguments); afterfn.apply(this,arguments); return ret; } } var func = function(){ console.log(2) } func = func.before(function(){ console.log(1); }).after(function(){ console.log(3) }) func(); //currying函数柯里化 var coast = (function(){ var args = []; return function(){ if(arguments.length === 0){ var a = 0; for(var i=0;i<args.length;i++){ a+=args[i] } return a; }else{ [].push.apply(args,arguments); } } })() coast(100); coast(200); console.log('***',coast());