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