Javascript静态方法链接
我可以在javascript中链接静态方法吗? 这是我试图做的一个例子Javascript静态方法链接,javascript,class,oop,chain,Javascript,Class,Oop,Chain,我可以在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" ret
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()
成为实例方法,而不是静态方法,这样您就可以操纵此
的值
为了获得所需的静态链接,只有链中的first方法需要是静态的。您可以调用一个静态方法,如create()
,该方法返回一个实例,然后可以对该实例调用链中的后续函数。下面是一个简单的例子:
类测试模型{
构造函数(){
this.data={};
}
静态创建(){
返回新的TestModel();
}
(){
this.data.a=真;
归还这个;
}
b(){
this.data.b=真;
归还这个;
}
最后(){
返回此.data;
}
}
console.log(TestModel.create().a().b().final());//=>{“a”:正确,“b”:正确}
console.log(TestModel.create().a().final());//=>{“a”:真的}
console.log(TestModel.create().b().final());//=>{“b”:true}
如果返回testModel
,则返回的对象具有可以调用的方法b
。但这还不包括任何数据。可能有很多方法可以实现这一点,但从一开始就没有多大意义。你可以找一个链式操作的例子。然而,我不确定我能不能提出一个通用的解决方案,因为并不是所有用例都能从方法链接中获益。每次你都必须至少部分地调整你的方法。它通常类似于将结果带到某个地方,以便每个方法都可以访问。或者,您可以收集操作并将值传递给所有操作,这将为您提供延迟计算。对于后一种情况,您可以查看传感器。但是,我不确定你是不是在追求这个是吗?只需返回这个
每个函数?但是不要使用静态方法。另请参阅:鉴于您似乎希望您的东西具有固有的状态,静态方法似乎没有意义。除非你想建立一个单例模型?啊,我明白了,谢谢你回答我愚蠢的问题,我想做的是,我想建立一个像laravel eloquent这样的模型,在那里我可以做Table.update(data.save)()但是使用静态方法,我不知道这是否可能,或者Notlarvel可能会从其静态方法返回一个对象实例,该静态方法包含数据和方法,这是一种典型的构建器模式。