javascript评估和对象评估

时间:2010-10-24 22:18:41

标签: javascript eval

我有一个调试框架的一部分,需要能够运行时间eval对象。

具体来说,如果我有一个类似于此"{a: 1, b:2}"的字符串,则需要将其评估为具有成员ab的对象。但是,如果我eval("{a: 1, b:2}"),它似乎将其评估为一个声明,并说明了一个非法标签。

我已经黑了它,所以它评估如下:

eval("var x=" + str + "; x;");

这似乎有效,但似乎是一个可怕的黑客。关于如何做得更好的任何建议?

(顺便说一下,我知道eval的危险,但这是实际用户不会看到的调试框架的一部分。)

1 个答案:

答案 0 :(得分:22)

您可以使用()将其解析为对象,而不是语句,如下所示:

eval("(" + str + ")");

但是,如果浏览器支持,则应首先使用JSON.parse()