相关疑难解决方法(0)

"添加"功能,适用于链接/参数的不同组合

我正在尝试编写一个可在许多场景下工作的添加功能.

add(2,2,2) //6
add(2,2,2,2) //8
add(2)(2)(2) // 6
add(2)(2)(2,2).value() //8
add(2,2)(2) + 2 //8
add(2).add(2) //4
add(2,2,2).add(2).add(2,2).value() //12
add(2,2,2).add(2).value() //8
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止:

function add(){
    var sum = 0;
    for( var i in arguments ){
        sum += arguments[i];
    }

    var ret = add.bind(null, sum);

    ret.value = function () {
      return sum;
    }

    ret.add = function () {
      for( var i in arguments ){
        sum += arguments[i];
      }
      return sum;
    }

    ret.valueOf = function(){ return sum; };
    
    return ret;
}

console.log(add(2,2,2));
console.log(add(2,2,2,2));
console.log(add(2)(2)(2)); …
Run Code Online (Sandbox Code Playgroud)

javascript

16
推荐指数
2
解决办法
2743
查看次数

标签 统计

javascript ×1