我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能).解析了公式后,我可以将其转换为JavaScript并eval()在其上运行以产生结果.
但是,eval()如果我可以避免它,我总是回避使用,因为它是邪恶的(而且,无论是对还是错,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会被用户改变).
那么,什么时候可以使用它?
所以,我有兴趣发现JSON.stringify将RegExp简化为空对象 - 文字(小提琴):
JSON.stringify(/^[0-9]+$/) // "{}"
Run Code Online (Sandbox Code Playgroud)
这种行为有望吗?我意识到RegExp是一个没有要序列化属性的对象.也就是说,日期也是对象; 但JSON.stringify()设法产生一个有意义的字符串:
JSON.stringify(new Date) // "2014-07-03T13:42:47.905Z"
Run Code Online (Sandbox Code Playgroud)
我希望JSON能够通过使用给予RegExp相同的考虑.JSON.stringify
鉴于这样的块:
var foo = {"regexp":/^http:\/\//,
"fun":function(){},
}
Run Code Online (Sandbox Code Playgroud)
将它存储在JSON中的正确方法是什么?