如何创建一个新对象,并将其超类型的名称分配给变量?

How to create a new object of which the name of its super type is assigned to a variable?

我使用class语法来定义几个原型。在我的代码中的某个时刻,我必须创建一个新对象,但是哪个对象完全取决于原型名称,原型名称作为字符串存储在变量中。

Calling a JavaScript function named in a variable中有一个解决方案,当函数名称存储在变量中时调用函数而不使用eval()。我怎样才能实现从这样的原型创建对象的同样的事情 parser = new VARIABLE_CONTAINING_PROTOTYPENAME?

不确定我是否非常喜欢使用字符串来表示类型,但我不知道你的用例,所以我不会判断!

new基于字符串的原型,您最好创建一个工厂函数:

function factory(name) {
    switch (name) {
        case "Object":
            return new Object();
        case "Array":
            return new Array();
        default:
            return null;
    }
}

var myObj = factory("Object");

或者,您可以创建一个对象,然后对其进行索引以获取构造函数:

var constructors = {
    "Object": Object,
    "Array": Array
};

var myObj = new constructors["Object"];