`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方法后立即返回结果,则会收到错误消息。 如何仅在最后一个方法之后返回结果?
答案 0 :(得分:2)
如果您想将呼叫链接到add
,multiply
等,它们都应返回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; }