我怎样才能仅在上次调用后返回类方法的结果

时间:2018-10-06 07:40:11

标签: javascript class

`enter code here`
class SmartCalculator {
  constructor(initialValue) {

  this.priority = 0;
  this.decision = initialValue;

  }

  add(number) {
  this.priority = 2
  this.decision = this.decision + number
 //return this.decision 
  }

  subtract(number) {
  this.priority = 2
  }

  multiply(number) {
  this.priority = 1
  }

  devide(number) {
  this.priority = 1
  }

  pow(number) {
  this.priority = 0
  }
}
module.exports = SmartCalculator;

我有js类,有些测试看起来像这样:

const calculator = new SmartCalculator(1);

const value = calculator
  .add(5)
  .add(5);

assert.equal(value, 11);
});

如果在调用add方法后立即返回结果,则会收到错误消息。 如何仅在最后一个方法之后返回结果?

2 个答案:

答案 0 :(得分:2)

如果您想将呼叫链接到addmultiply等,它们都应返回this。第calculator.add(5).add(5)行接受calculator,在其上调用最左边的add(5),得到该行的结果(即6),并尝试调用add(5)它。 6.add(5)引发错误。

如果您返回了this,则最左边的调用将返回更新后的计算器,可以在其上再次调用add(5)

然后,您需要实现getResult()之类的方法或返回this->decision的方法,并在添加后添加对该方法的调用:calculator.add(5).add(5).getResult()

答案 1 :(得分:1)

将其略微更改为:

 const { value } = calculator
  .add(5)
  .add(5);

然后您只需要

  return this;

在每个方法的末尾,并在您的类中添加一个小型吸气剂:

 get value() { return this.decision; }