`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方法后立即返回结果,我会得到一个错误。我怎么能只在最后一个方法之后返回结果呢?
发布于 2018-10-06 15:45:00
如果你想把调用链接到add,multiply等,它们都应该返回this。calculator.add(5).add(5)行获取calculator,调用最左边的add(5),获取结果(即6),并尝试对其调用add(5)。6.add(5)会引发错误。
如果返回this,最左边的调用将返回更新后的计算器,可以再次调用add(5)。
然后,您需要实现一个类似于getResult()或返回this->decision的方法,并在add:calculator.add(5).add(5).getResult()之后添加对此方法的调用。
发布于 2018-10-06 15:44:36
将其稍微更改为:
const { value } = calculator
.add(5)
.add(5);然后你只需要
return this;在每个方法的末尾添加一个小getter到你的类中:
get value() { return this.decision; }https://stackoverflow.com/questions/52676815
复制相似问题