call,apply

1.call要逐个传入参数

2apply方法的必须

    function curry(fn)
    {
        var args=Array.prototype.slice.call(arguments,1);
        return function()
        {
            var innerArgs=Array.prototype.slice.call(arguments);
            var finalArgs=args.concat(innerArgs);
            console.log(finalArgs);
            return fn(finalArgs);//正确写法fn.apply(null,finalArgs);
        };
    }

    function add(num1,num2)
    {
        return num1+num2;
    }
    var curriedAdd=curry(add,5);
    console.log(curriedAdd(3));//输出5,3undefined,因为add没第二个参数,第一个参数为数组

 

posted @ 2015-08-04 08:46  simple_ac  阅读(117)  评论(0)    收藏  举报