我正在尝试创建一个小型库,您可以发送一个对象(具有函数)和一些数据以及参数,它会将对象、数据和参数发送到工作进程,然后工作进程将评估该对象重构函数(从字符串到函数)
目前我有这个:
JSON.stringify(对象, 函数(key, val) {
if typeof val === 'function' { return val + '' }
返回值
});
此函数将字符串化包含函数的对象。
在我的工作人员中,我试图撤消此过程。
我尝试过以下方法:
评估(对象)
当我遇到一个函数时,我还尝试通过尝试 eval() 来实现 JSON.parse。
我也尝试过eval("return "+ object.function)
这可能吗?
最佳答案
您可能想要:
eval("(" + object.function + ")");
你不能把 return 语句放在某个地方。
function() {}
被评估为函数声明,但由于没有名称而失败。由于要解析的数据代表一个函数表达式,例如var f = function() {}
,因此您需要在其周围放置()
,以便将其计算为表达式。
关于javascript - 计算函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823272/