字符串中的ES6类实例

时间:2019-01-21 09:40:11

标签: javascript string instance es6-class

我尝试从字符串动态设置实例。我已经阅读了许多有关此问题的信息,但答案对我而言不起作用。

它表示可以在名称前使用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?还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

仅全局变量会自动放入BaseClass中。

创建一个从类名映射到类的对象:

window

然后使用const classMap = { "MyClass": MyClass, "MyClass2": MyClass2, ... }; 而不是classMap[name](params)