我正在尝试创建一个小型库,您可以发送一个对象(具有函数)和一些数据,以及args,它会将对象,数据和args发送给工作进程,然后工作进程将对对象进行评估重建函数(从字符串到函数)
目前我有这个:
JSON.stringify(object, function(key, val) {
if typeof val === 'function' { return val + '' }
return val
});
此函数将对包含函数的对象进行字符串化。
在我的工作人员中,我试图撤消这个过程。
我尝试过以下方法:
eval(object)
我也试过实现JSON.parse,当我遇到一个函数时尝试eval()每个函数。
我也试过eval("return " + object.function)
这可能吗?
答案 0 :(得分:1)
你可能想要:
eval("(" + object.function + ")");
你不能在某个地方放置一个return语句。
function() {}
被评估为函数声明,由于没有名称而失败。由于要解析的数据表示函数 expression ,如var f = function() {}
,因此需要在其周围放置()
,以便将其作为表达式进行求值。