[英]Why does JS say “class cannot be called as a function” in this case?
在实例化 class 时,我偶然发现了一个奇怪的错误,我不确定这是错误还是功能。
我有一个 object 定义如下:
foo: {
dataType: {
extraData: {
model: () => Foo,
},
}
}
其中Foo
是在其他地方定义并导入的 class。 我不可能避免在 `Foo.
当我尝试通过实例化它时
const foo = new foo.dataType.extraData.model()(constructor_parameter);
说不能将 class 称为 function 是行不通的。 这是可以理解的,但是当我像这样重构它时
const model = foo.dataType.extraData.model();
const foo = new model(constructor_parameter);
它突然起作用了。 我不确定这两种方法之间是否有任何差异。
您可以在()
中包装model
方法调用,以便首先将其解析为表达式,然后您可以在该表达式的结果上使用新关键字,这将是您的 class。
class Foo { constructor(params) { console.log(params) } } const foo = { dataType: { extraData: { model: () => Foo, }, } } const bar = new (foo.dataType.extraData.model())(123);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.