繁体   English   中英

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

[英]How to access the context of imported modules in ES6?

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

为了给出我正在做的简单示例,假设我们有一个名为MyClasses.js的文件,其中包含以下两个类:

export class MyClass1 {}
export class MyClass2 {}

然后,我们将上述类导入到名为main.js的文件中

import {MyClass1, MyClass2} from './MyClasses'

main.js我可能基于一些属性值构造每个类的新实例。

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

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

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

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

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

...并从那里构造我的类的实例:

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

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

只需修改您的导入,您就可以了:

import * as MyClasses from './MyClasses';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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