用語が混在している可能性がありますが、グローバルコンテキストに同じ方法でwindow
でアクセスできます。インポートしたモジュールの現在のコンテキストにアクセスしたいと思います。ES6でインポートされたモジュールのコンテキストにアクセスする方法は?
、私がやっているの簡単な例を与える私たちは、ファイルを持って想像するのは、次の2つのクラスが含まれている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
}
これは基本的な例であるが、そのようなクラスを構築するための多くのクラスと例がある状況で、私は関係をマッピングするのではなく、複雑な場合/ elseロジックに依存したいと思います。
一つの解決策は... window
コンテキストに
window.MyClass1 = MyClass1;
window.MyClass2 = MyClass2;
をインポートされたクラスを添付...、そこから私のクラスのインスタンスを構築するために、次のようになります。
const myClass = new window[constructorName](); // valid construction
しかし、私は思いますこれらをグローバルスコープにバインドしないようにします。インポートされたモジュールのデフォルトのコンテキストはありますか、または自分でコンテキストを設定する必要はありますか?
代わりにそこに(文字列として)名前を入れるのは、なぜ単にクラス(コンストラクタ関数)自体を検索しませんか? 'config = {case1:MyClass1、case2:MyClass2、case3:MyClass1}' – Bergi
@Bergiはい、これは良い解決策です。なぜ私はこのことを考えなかったのか分かりません – sookie