上代码
function add(a,b,c,d)
{
return a+b+c+d;
}
function fun(fn)
{
var _arg=Array.prototype.slice.call(arguments,1); //从第二个参数开始往后截取
return function()
{
var _arg2=[].slice.call(arguments,0);
var newArg=_arg.concat(_arg2);
console.log(newArg);
return fn.apply(this,newArg);
}
}
function Curry(fn,length)
{
debugger
var length=length||fn.length;
console.log(arguments.length)
return function()
{
if(arguments.length<length)
{
var arg=[fn].concat([].slice.call(arguments,0));
return Curry(fun.apply(this,arg),length-arguments.length)
}
else return fn.apply(this,arguments);
}
}
var newAdd=Curry(add);
//console.log(newAdd)
console.log(newAdd(12)(15)(10)(1))