如何创建一个新的对象,其超类型的名称被赋给一个变量?

时间:2016-12-06 15:34:50

标签: javascript prototype eval

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

Calling a JavaScript function named in a variable中,有一个解决方案,在函数名称存储在变量中而不使用eval()时调用该函数。如何从像parser = new VARIABLE_CONTAINING_PROTOTYPENAME这样的原型中创建对象来实现相同的目标?

1 个答案:

答案 0 :(得分:2)

不确定我是使用字符串来表示类型的忠实粉丝,但我不知道你的用例,所以我不会判断!

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