将其作为字符串加载后,只需使用eval重新创建该函数即可。因此,如果您
myObj从JSON 反序列化对象,并且具有一个属性:
myObj = { .... function: "function() { ... }"}您可以很容易地将其转换为实函数:
eval("myObj.func = " + myObj.func);http://jsfiddle.net/kceTr/
哦-我不确定这是否是编辑内容,还是我之前错过了它-但是请重新评估。
评估是一种工具。您想要将函数存储在数据库中。如果您必须“评估”以将其转换为代码,或者有其他魔术方法可以实现,那么这实际上并没有多大区别:如果有人可以更改数据库中的数据,那么他们可以更改函数。
如果您需要存储函数,那么eval是您的工具。它不是天生的“坏”,而是坏的,因为它很容易被滥用。是否使用得当取决于您。
请记住,客户端上运行的所有内容仍然只是在客户端上运行。恶意人员无法使用eval进行操作,他们无法更轻松地使用Chrome调试器进行操作。任何人都可以始终在客户端上运行他们想要的任何代码,这取决于您的服务器来决定如何处理收到的代码。首先,客户没有什么安全的…



