可能重复:
create object from dynamic classname - ReflectionClass in JS?
是否可以在javascript中执行此操作?
var objectName = "object";
var object = new objectName();
或沿着这些方向的东西?
答案 0 :(得分:7)
如果构造函数是全局定义的......
var object = new window[objectName]();
如果没有,则需要使用eval
或Function
构造函数。在你这样做之前,我会尝试找到一种不同的方式来做你正在做的事情。
答案 1 :(得分:1)
您可以使用eval()来实现这一目标。 Eval基本上解释了一个字符串,就像它是一个脚本行。尽管如此,一些开发人员认为这对你的日常使用来说是一个危险的功能,而另一些则没有。阅读更多here。
使用eval(已更正)的代码示例:
var objectName = "Object";
var object = new (eval(objectName));
eval("object.name = \"Nice!\""); // you don't need this, just an example of eval capabilities
document.write(object.name);
答案 2 :(得分:0)
不,你编码的方式不可能。但是稍作改动......
var object = { objectName: "object" };
alert(object.objectName); // Pops up "object"
如果您更喜欢new
语法,则必须存在构造函数。
function ObjectName(name) // This is the "constructor" function
{
this.objectName = name;
}
var object = new ObjectName("object");
alert(object.objectName); // Pops up "object"