我尝试从字符串动态设置实例。我已经阅读了许多有关此问题的信息,但答案对我而言不起作用。
它表示可以在名称前使用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
?还有其他想法吗?
答案 0 :(得分:2)
仅全局变量会自动放入BaseClass
中。
创建一个从类名映射到类的对象:
window
然后使用const classMap = {
"MyClass": MyClass,
"MyClass2": MyClass2,
...
};
而不是classMap[name](params)
。