关于之前一个问题

43 阅读1分钟

关于之前一个问题:

即类似函数柯里化,问:

实现一个addNum()函数,要求

例1:

let sum = 1;
addNum(1,2).addNum(3).addNum(4);     10   

例2:

let sum = 1;
addNum(1).addNum(3).addNum(4).addNum(5).addNum(6);     19 

这道题,第一眼我感觉是函数柯里化,但是它没有终止条件,用传统的柯里化方法,我觉得有一点问题(可能是我水平不够),然后我想到了直接改原型方法,好像还行。

function a() {
  Number.prototype.addNum = function () {
    let sum = 0;
    for (let i of arguments) {
      sum += i;
    }
    return Number(this.valueOf() + sum);
  };
  let sum = 1;
  console.log(sum.addNum(1, 2).addNum(1));
  Number.prototype.addNum = null;
}
a();