我使用类语法来定义几个原型。在我的代码中的某一点,我必须创建一个新对象,但哪个对象完全取决于原型名称,该名称作为字符串存储在变量中。
在Calling a JavaScript function named in a variable中,有一个解决方案,在函数名称存储在变量中而不使用eval()
时调用该函数。如何从像parser = new VARIABLE_CONTAINING_PROTOTYPENAME
这样的原型中创建对象来实现相同的目标?
答案 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"];