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

实现  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 @   张琼  阅读(557)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示