Javascript静态方法链接



我可以用javascript链接静态方法吗?下面是我尝试做的一个例子

test.js
'use strict'
class testModel{
static a(){

return "something that will be used in next method"
}
static b(){
let previousMethodData = "previous method data"
return "data that has been modified by b() method"
}
}
module.exports = testModel

然后我想能够调用像这样的方法

const value = testModel.a().b()

其他人在评论中解释说,您希望方法a()b()是实例方法,而不是静态方法,这样您就可以操作this的值。

为了获得所需的静态链接,链中只有第一个方法需要是静态的。您可以调用一个静态方法,如返回实例的create(),然后可以在该实例上调用链中的后续函数。这里有一个简单的例子:

class TestModel {
constructor() {
this.data = {};
}
static create() {
return new TestModel();
}
a() {
this.data.a = true;
return this;
}
b() {
this.data.b = true;
return this;
}
final() {
return this.data;
}
}
console.log(TestModel.create().a().b().final()); // => {"a": true, "b": true}
console.log(TestModel.create().a().final()); // => {"a": true}
console.log(TestModel.create().b().final()); // => {"b": true}

最新更新