// var cost = (function () { // var args = []; // return function () { // if (arguments.length === 0) { // var money = 0; // for (var i = 0, l = args.length; i < l; i++) { // money += args[i] // } // return money; // } // else { // Array.prototype.push.apply(args, arguments) // } // } // })() // cost(200) //这个只要用于保存参数,或者判断是否需要进行一次性求值 var curring = function (fn) { var arg = []; return function () { if (arguments.length === 0) { return arg } else { [].push.apply(arg, arguments); return arguments.callee } } }; var cost = (function () { var money = 0; return function () { for (var i = 0, l = arguments.length; i < l; i++) { money += arguments[i] } return money } } )(); var cost = curring(cost); cost(300);
Function.prototype.uncurrying = function () { console.log(this)//谁调用指向谁 var self = this; return function () { var obj = Array.prototype.shift.call(arguments);//对象 return self.apply(obj, arguments)//数组 } }; var push = Array.prototype.push.uncurrying(); (function () { push(arguments, 4); console.log(arguments,'arguments'); })(1, 2, 3)