Javascript 访问静态方法中的类

Javascript 访问静态方法中的类,javascript,typeerror,es6-class,Javascript,Typeerror,Es6 Class,我正在构建一个简单的类。我的问题是: 如何在静态类方法中访问类方法,或者这个 当尝试访问静态方法中的此时,如下所示: const{ProductsCollection}=require('../utils/Collection') 让modeledCollection=ProductsCollection.mapToModel(旧版) 我得到一个类型错误:this.generateModel不是一个函数。这是我的班级: 类产品集合{ generateModel(){ let model={na

我正在构建一个简单的
。我的问题是:

如何在静态类方法中访问类方法,或者
这个

当尝试访问
静态方法中的
时,如下所示:

const{ProductsCollection}=require('../utils/Collection')
让modeledCollection=ProductsCollection.mapToModel(旧版)
我得到一个类型错误
this.generateModel不是一个函数
。这是我的班级:

类产品集合{
generateModel(){
let model={name:'testing'}
回归模型
}
静态映射模型(遗留){
如果(!isObject(遗留))
归还遗产
让current=this.generateModel()//在这里!!!
for(让输入遗留){
//一些代码。。。
}
回流
}
}
module.exports={ProductsCollection}
提前谢谢

如何在静态类方法中访问类方法,或者就此而言,如何访问类方法

静态
方法访问实例信息的唯一方法是创建一个实例(或接收一个实例作为参数,或关闭一个实例[这将非常奇怪],等等;例如,您需要一个实例)。这就是
static
方法的要点:它们不与类的实例关联,而是与构造函数关联

如图所示,您的
generateModel
方法也不使用实例,因此它也是
static
也是有意义的。然后您可以通过
this.generateModel
(假设
mapToModel
是通过
ProductsCollection.mapToModel
调用的)或
ProductsCollection.generateModel
(如果您不想这样做的话):

类产品集合{
静态generateModel(){
返回{name:“testing”};
}
静态映射模型(遗留){
返回这个.generateModel();
//或者“return ProductsCollection.generateModel();”如果要使用
//“ProductsCollection”是专门的,不友好
//到子类
}
}
log(ProductsCollection.mapToModel({}))
如何在静态类方法中访问类方法,或者就此而言,如何访问类方法

静态
方法访问实例信息的唯一方法是创建一个实例(或接收一个实例作为参数,或关闭一个实例[这将非常奇怪],等等;例如,您需要一个实例)。这就是
static
方法的要点:它们不与类的实例关联,而是与构造函数关联

如图所示,您的
generateModel
方法也不使用实例,因此它也是
static
也是有意义的。然后您可以通过
this.generateModel
(假设
mapToModel
是通过
ProductsCollection.mapToModel
调用的)或
ProductsCollection.generateModel
(如果您不想这样做的话):

类产品集合{
静态generateModel(){
返回{name:“testing”};
}
静态映射模型(遗留){
返回这个.generateModel();
//或者“return ProductsCollection.generateModel();”如果要使用
//“ProductsCollection”是专门的,不友好
//到子类
}
}

log(ProductsCollection.mapToModel({}))无法访问实例方法,因为它是静态方法。这是一个典型的错误。在静态方法中使用实例方法的唯一方法是,如果有可用的类实例(因此名为“实例方法”)

通常,在决定什么应该是静态的,什么不应该是静态的过程中,您会犯一些错误……如果不考虑太多,我可以建议将
generateModel
方法设置为静态。另一种方法是完全删除
generateModel
方法,并将其行为合并到构造函数中。这取决于你的需要


请记住,如果您正在访问方法中的非静态属性,那么它可能不应该是静态的。

您无法访问实例方法,因为它是静态的。这是一个典型的错误。在静态方法中使用实例方法的唯一方法是,如果有可用的类实例(因此名为“实例方法”)

通常,在决定什么应该是静态的,什么不应该是静态的过程中,您会犯一些错误……如果不考虑太多,我可以建议将
generateModel
方法设置为静态。另一种方法是完全删除
generateModel
方法,并将其行为合并到构造函数中。这取决于你的需要


请记住,如果您正在访问方法中的非静态属性,那么它可能不应该是静态的。

您不应该这样做
static
意味着没有实例,所以你不能访问实例属性。我的错,把它发布到fast。@t.J.Crowder尽管如此,如果我在这里发布一个问题是因为我对某些东西感到困惑,那么整件事就是要纠正和学习,你不这样认为吗?@kamatheuska-问题只是因为语法错误而不清楚。你现在已经修好了,你没有
static
意味着没有实例,所以你不能访问实例属性。我的错,把它发布到fast。@t.J.Crowder尽管如此,如果我在这里发布一个问题是因为我对某些东西感到困惑,那么整件事就是要纠正和学习,你不这样认为吗?@kamatheuska-问题只是因为语法错误而不清楚。你现在已经解决了。第一个片段似乎是处理我的案子最简单的方法。谢谢你的回答!第一个片段似乎是继续我的案例的最简单方式。谢谢你的回答!