一个有趣的函数链式调用的方式

实现  add(1,2,3)(4)//10

add(1)(2)(3)(4)//10

贴代码

function add(){
    var args = Array.prototype.slice.apply(arguments)
    var fn = function (){
        var arg_fn = Array.prototype.slice.call(arguments)
        return add.apply(null, args.concat(arg_fn))
    }
    fn.valueOf = function () {
        return args.reduce( function(prev, curr) {
            return prev + curr
        })
    }
    return fn 
}

这是效果

调用返回一个函数,函数的valueOf返回计算结果

posted @ 2017-03-28 00:03  张琼  阅读(555)  评论(0编辑  收藏  举报