【问题标题】:DRY up - Call class method if no instance exists, otherwise call instance methodDRY up - 如果不存在实例,则调用类方法,否则调用实例方法
【发布时间】:2017-11-04 22:35:28
【问题描述】:

情况

如果输入是“开始”,则自动计算“结束”,然后用“结束”预填充页面

如果输入是“结束”,只需用它预填充页面

我正在尝试编写一个类来处理此功能。

class EndVal(start_value) {
  constructor() {
    this.end_value = start_value + 10
    $("#end").text(this.end_value)
  }

  static prefill(end_value) {
    $("#end").text(end_value)
  }
}

根据上面的代码,如果你有一个“开始”,你只需做new EndVal(start_value),但如果你已经有一个“结束”而不是实例化一个新对象,你可以做EndVal.prefill(end_value) .但它不是很干燥......我想知道如何修复它,并以某种方式链接实例和类方法?

【问题讨论】:

  • 嗯。唯一不是“干”的事情是 jQuery text() 调用。如果你把它放在它自己的函数中,它会变成“DRY”,但我怀疑这就是你要问的。你能澄清一下吗?我错过了什么?

标签: javascript class instance dry


【解决方案1】:

prefill 方法应该使用传递的参数而不是 this。现在您可以从构造函数中获取所有方法:

class EndVal {
  constructor(start_value) {
    this.end_value = start_value + 10
    this.constructor.prefill(this.end_value);
  }

  static prefill(end_value) {
    console.log(end_value);
  }
}

const endVal = new EndVal(15);

EndVal.prefill(28);

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2021-02-08
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多