javascript之反柯里化uncurrying
使用方法:
1 // 使用 2 var push=Array.prototype.push.uncurrying(); 3 var obj={ 4 "length": 1, 5 "0": 1 6 } 7 push(obj,2); 8 console.log(obj); // { 0=1, 1=2, length=2} 9 10 function fn(name){ 11 console.log(this.name); //test 12 console.log(arguments); //[123, 234] 13 } 14 // 使用 15 var apply=Function.prototype.apply.uncurrying(); 16 apply(fn,{name: 'test'}, [123,234]);
实现方法一:
1 Function.prototype.uncurrying=function(){ 2 var self=this; 3 return function(){ 4 var obj=Array.prototype.shift.call(arguments); //取出第一个参数 5 return self.apply(obj, arguments); //第一个参数作为this对象传递 6 }; 7 };
实现方法二:
1 Function.prototype.uncurrying=function(){ 2 var self=this; 3 return function(){ 4 return Function.prototype.call.apply(self, arguments); 5 }; 6 };
总结:uncurrying方法主要用于框架封装,当然一般的开发场景也可以使用,但根据本人经验来看,用的不是很多。