动态创建javascript中的对象?

时间:2012-01-31 15:18:40

标签: javascript oop object

  

可能重复:
  create object from dynamic classname - ReflectionClass in JS?

是否可以在javascript中执行此操作?

var objectName = "object";
var object = new objectName();

或沿着这些方向的东西?

3 个答案:

答案 0 :(得分:7)

如果构造函数是全局定义的......

var object = new window[objectName]();

如果没有,则需要使用evalFunction构造函数。在你这样做之前,我会尝试找到一种不同的方式来做你正在做的事情。

答案 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);

正在运行:http://jsfiddle.net/RxNsd/4/

答案 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"