有一个先前的问题(here),但是那里的答案并没有完全回答我的问题 - 接受的答案包含无效的 JSON(强制使用eval()
),据我所知,这根本不可能做类似的事情.
我打算使用我自己的服务器中的代码,该代码作为对象文字语法存储在字符串中,但是我也希望能够在其中存储函数。
目前,我想到了以下几种可能性:
- 简单地
eval()
用来解析字符串 - 以字符串形式放置函数(类似于
"\bfunction"
能够识别它们的东西),JSON.parse()
在其上运行,然后使用 for-in 循环查看是否需要解析任何此类函数(可能很慢) - 使用 DOM 使用
<script>
标签运行代码并在那里运行
此代码不会包含任何应该是用户可编辑的内容,但是我不确定是否仍然存在安全问题或只是速度问题。使用eval()
是否适合我的情况,有没有比手动解析函数或使用更有效的方法eval()
?
编辑:解析的替代语法会更好还是只会让事情变得更加复杂?
EDIT2:我只是想做以下事情:
{ "test": function () {}
, "foo": 1
, "bar": 2 }
我不想只从字符串中解析整个函数,例如
eval('function(){}');