- // 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)
函数柯里化
来源: http://www.bubuko.com/infodetail-3304592.html