//判断数据类型
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());