ES6 class 来自字符串的实例

ES6 class instance from string

我尝试从字符串动态设置实例。我已经阅读了很多关于它的问题,但答案对我不起作用。

它说可以在名称前使用window来设置实例。没用。

class MyClass {
  // Something useful
}
let params = {};
let name = 'MyClass';
let instance = new window[name](params);

我也试过这样做但没有成功(抛出错误):

let instance = new window['MyClass'](params);

但是,这有效:

let instance = new MyClass(params);

为什么我不能在这种情况下使用 window?还有其他想法吗?

只有全局变量会自动放入window

创建一个从 class 名称映射到 classes:

的对象
const classMap = {
    "MyClass": MyClass,
    "MyClass2": MyClass2,
    ...
};

然后使用 classMap[name](params) 而不是 window[name](params)