码迷,mamicode.com
首页 > 其他好文 > 详细

实现一个简单的curry函数

时间:2015-07-17 11:29:35      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

curry函数是向一个函数传入部分的参数,从而产生一个新的函数,来达到对函数实现套用的操作

首先我们为所有的函数原型添加一个方法

Function.prototype.method = function(name,func) {
            this.prototype[name] = func;
            return this;
        }

在这里我们为Function的原型对象添加了一个method方法 ,这样当我们为函数原型添加方法的时候,就直接添加到Function.prototype中

也就是说我们可以直接这样

     function add() {

        }

        Function.method(‘a‘,function(){
            console.log(1);
        });

        add.a();

在上面的例子中我们有一个声明的add()函数 我们为Function的原型对象添加了一个a方法 在控制台输出1  当我们进行这样的调用的时候add.a() 它会自动的在原型对象中查找a方法并且执行

下面是实现一个简单的实现curry函数的过程

      Function.method(‘curry‘,function(){
            var slice = Array.prototype.slice,
                args = slice.apply(arguments),//通过数组Array.prototype.slice方法对curry之前的参数arguments变成数组(arguments是一个类数组)
                that = this,//设置that = this  是为了curry后的函数想调用curry之前的作用域
                resultbefore = 0;

            resultbefore = args[0] + args[1];

            return function(c) {
                
                var result = resultbefore + c;
                console.log(result);
         //在这里操作that的话,可以应用之前的作用域 apply(that) } });
     function add() {
     }
     
     var add2 = add.curry(1,2);

    add2(3);//输出6

上面的例子就实现了一个简单的函数curry化的过程

 

实现一个简单的curry函数

标签:

原文地址:http://www.cnblogs.com/tiantianwaigong/p/4653708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!