Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript静态方法链接_Javascript_Class_Oop_Chain - Fatal编程技术网

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

我可以在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()
成为实例方法,而不是静态方法,这样您就可以操纵
的值

为了获得所需的静态链接,只有链中的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可能会从其静态方法返回一个对象实例,该静态方法包含数据和方法,这是一种典型的构建器模式。