【发布时间】:2019-06-14 16:08:36
【问题描述】:
我尝试从字符串动态设置实例。我已经阅读了很多关于它的问题,但答案对我不起作用。
它表示可以在名称前使用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,如果它是一个全局变量。您必须在本地范围内定义类,而不是在全局范围内。 -
@Barmar 是的,我在另一个类的构造函数中。
-
一个 hacky 方法是
eval('var instance = new '+name+'()')。限制看起来类似于older question of mine
标签: javascript string instance es6-class