簡體   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