Array.prototype.slice.call()

Array.prototype.slice.call()

下面要接触‘函数柯里化’这个概念,感觉跟题目不符,不会的。题目上的会在柯里化中接触到,至于为什么题目不叫‘函数柯里化’,是考虑到我对这个感念都不是很熟悉。网上找了很多,发现大同小异,没有通俗易懂了话语,我的要求就是‘小白都要能看懂才行’。


  1. 概念:把接受多个参数的函数变换成接收一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术(百度找的)。//相当于使用一个闭包返回一个函数,这个函数就需要你传原参数中剩余的参数。哎!我都绕糊涂了,那位大侠解释解释呗。
  2. 涉及的知识点:
    1.闭包、slice(),call()~~~~
    Eaxmple:
function curry(fn){
        var args = Array.prototype.slice.call(arguments,1);
 /**为什么要用Array.prototype.slice?**/
 //是因为我们传的参数不是数组,所有只有用数组原型中的方法
 //Array.prototype.slice = function(arg,arg1,……){}
 //~~.call用call是把arguments绑定在slice这个方法上,(不知道这样说对不对?)
 //Array.prototype.slice.call(obj,start,end)--start:方法中slice截取的开始位置,end终止位置;      
        return function(){
            var innerArgs = Array.prototype.slice.call(arguments);

            var finalArgs = args.concat(innerArgs);

            return fn.apply(null, finalArgs);
            //null是没有指定环境;
        };
    }
    function add(num1, num2){
        return num1 + num2;
    }
    var curriedAdd = curry(add, 5);
    alert(curriedAdd(3));

代码的其余部分我就不解释了,应该很好看懂,至于怎么深入了解大家可以去试试,数组的prototype的方法,字符串的prototype的方法。自己试吧!
以上只是本人暂时的理解,不足之处请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值