我的术语可能会混淆,但与我通过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
但我想避免将这些绑定到全球范围。是否有任何导入模块的默认上下文,或者我是否需要自己设置上下文?
答案 0 :(得分:2)
只需修改您的导入即可:
import * as MyClasses from './MyClasses';