如何在 ES6 中访问导入模块的上下文?

How to access the context of imported modules in ES6?

我可能混淆了我的术语,但是以我可以通过 window 访问全局上下文的相同方式,我想访问我导入的模块的当前上下文。

举一个简单的例子来说明我在做什么,假设我们有一个名为 MyClasses.js 的文件,其中包含以下两个 classes:

export class MyClass1 {}
export class MyClass2 {}

然后我们将 classes 导入到一个名为 main.js

的文件中
import {MyClass1, MyClass2} from './MyClasses'

main.js 中,我可能会根据某些 属性 值构造每个 class 的新实例。

function main()
{
    const config = { case1: 'MyClass1', case2: 'MyClass2', case3: 'MyClass1' };

    const myPropValue = 'case3';
    const constructorName = config[myPropValue];
    const myClass = new context[constructorName](); // MyClass1
}

这是一个基本示例,但是在有许多 classes 和构造此类 classes 的情况下,我想映射关系而不是依赖于复杂的if/else逻辑。

一个解决方案是将导入的 classes 附加到 window 上下文...

window.MyClass1 = MyClass1;
window.MyClass2 = MyClass2;

... 并从那里构建我的 classes 的实例:

const myClass = new window[constructorName](); // valid construction

但我想避免将它们绑定到全局范围。是否有任何导入模块的默认上下文,还是我需要自己设置上下文?

只需修改导入即可:

import * as MyClasses from './MyClasses';