Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自字符串的ES6类实例_Javascript_String_Instance_Es6 Class - Fatal编程技术网

Javascript 来自字符串的ES6类实例

Javascript 来自字符串的ES6类实例,javascript,string,instance,es6-class,Javascript,String,Instance,Es6 Class,我尝试从字符串动态设置实例。我读了很多关于它的问题,但答案对我来说并不适用 它表示可以在名称之前使用window来设置实例。它不起作用 class-MyClass{ //有用的东西 } let params={}; 让name='MyClass'; 让实例=新窗口[名称](参数); 我也尝试过在没有运气的情况下这样做(抛出错误): let instance=newwindow['MyClass'](参数); 然而,这是可行的: let instance=newmyclass(params)

我尝试从字符串动态设置实例。我读了很多关于它的问题,但答案对我来说并不适用

它表示可以在名称之前使用
window
来设置实例。它不起作用

class-MyClass{
//有用的东西
}
let params={};
让name='MyClass';
让实例=新窗口[名称](参数);
我也尝试过在没有运气的情况下这样做(抛出错误):

let instance=newwindow['MyClass'](参数);
然而,这是可行的:

let instance=newmyclass(params);

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

只有全局变量会自动放入
窗口

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

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

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

只有全局变量才会自动放入
窗口

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

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

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

如果它是全局变量,则只能使用
window
。您必须在本地作用域而不是全局作用域中定义该类。@Barmar是的,我在另一个类的构造函数中。一种常见的方法是执行
eval('var instance=new'+name+'))
。这些限制看起来类似于一个只有全局变量才能使用的
窗口。您必须在本地作用域而不是全局作用域中定义该类。@Barmar是的,我在另一个类的构造函数中。一种常见的方法是执行
eval('var instance=new'+name+'))
。这些限制看起来类似于