繁体   English   中英

为什么在这种情况下 JS 会说“类不能作为函数调用”?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM