如何在 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';
我可能混淆了我的术语,但是以我可以通过 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';