首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在最后一次调用后才返回类方法结果

如何在最后一次调用后才返回类方法结果
EN

Stack Overflow用户
提问于 2018-10-06 15:40:11
回答 2查看 39关注 0票数 0
代码语言:javascript
运行
复制
`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类,一些测试看起来像这样:

代码语言:javascript
运行
复制
const calculator = new SmartCalculator(1);

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

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

如果我在调用add方法后立即返回结果,我会得到一个错误。我怎么能只在最后一个方法之后返回结果呢?

EN

回答 2

Stack Overflow用户

发布于 2018-10-06 15:45:00

如果你想把调用链接到addmultiply等,它们都应该返回thiscalculator.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()之后添加对此方法的调用。

票数 2
EN

Stack Overflow用户

发布于 2018-10-06 15:44:36

将其稍微更改为:

代码语言:javascript
运行
复制
 const { value } = calculator
  .add(5)
  .add(5);

然后你只需要

代码语言:javascript
运行
复制
  return this;

在每个方法的末尾添加一个小getter到你的类中:

代码语言:javascript
运行
复制
 get value() { return this.decision; }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52676815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档