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

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"];

10-04 22:52
查看更多