创建可重用的链函数javascript

时间:2018-03-10 11:05:49

标签: javascript method-chaining chain

我试图创建可重复使用的链接功能,但我被卡住了。常见的方式c.plus(5).plus(2).execute()工作正常,但我不知道如何使这个可重用如下。你知道怎么做吗?



function chain() {
  this.i = 0;
  this.plus = (x) => {
    this.i = this.i + x;
    return this;
  };
  this.execute = () => console.log(this.i);
}
const c = new chain();
const c1 = c.plus(5);
c1.plus(2).execute(); // 7
c1.execute();// 7 instead of 5




1 个答案:

答案 0 :(得分:2)

当前功能的问题在于,当您致电plus()时,您正在修改原始对象i中的c

相反,每次调用chain时都会返回一个新的plus(arg)对象,并将arg添加到当前值i

顺便说一下,javascript中习惯使用TitleCase来命名构造函数。通常chainChain。 FYI。



function Chain() {
  this.i = 0;
  this.plus = (x) => {
    let c = new Chain();
    c.i = this.i + x;
    return c;
  };
  this.execute = () => console.log(this.i);
}
const c = new Chain();
const c1 = c.plus(5);
c1.plus(2).execute(); // 7
c1.execute();// 7 instead of 5
c.plus(2).plus(10).execute(); // 12