DRY up - 如果不存在实例则调用 class 方法,否则调用实例方法
DRY up - Call class method if no instance exists, otherwise call instance method
情况
如果输入 "start",自动计算 "end",然后用 "end"
预填充页面
如果输入是 "end",只需用它预填充页面
我正在尝试编写 class 来处理此功能。
class EndVal(start_value) {
constructor() {
this.end_value = start_value + 10
$("#end").text(this.end_value)
}
static prefill(end_value) {
$("#end").text(end_value)
}
}
根据上面的代码,如果你有一个 "start",你只需做 new EndVal(start_value)
,但如果你已经有一个 "end" 而不是实例化一个新对象,你可以做 EndVal.prefill(end_value)
。但它不是很干......我想知道如何修复它,以及不知何故 link 实例和 class 方法?
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);
情况
如果输入 "start",自动计算 "end",然后用 "end"
预填充页面如果输入是 "end",只需用它预填充页面
我正在尝试编写 class 来处理此功能。
class EndVal(start_value) {
constructor() {
this.end_value = start_value + 10
$("#end").text(this.end_value)
}
static prefill(end_value) {
$("#end").text(end_value)
}
}
根据上面的代码,如果你有一个 "start",你只需做 new EndVal(start_value)
,但如果你已经有一个 "end" 而不是实例化一个新对象,你可以做 EndVal.prefill(end_value)
。但它不是很干......我想知道如何修复它,以及不知何故 link 实例和 class 方法?
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);