1

我正在尝试创建一个小型库,您可以发送一个对象(具有函数)和一些数据和参数,它会将对象、数据和参数发送给一个工作进程,然后该工作进程将评估对象以重建函数(从字符串到函数)

目前我有这个:

JSON.stringify(object, function(key, val) { if typeof val === 'function' { return val + '' } return val });

此函数将对包括函数的对象进行字符串化。

在我的工作人员中,我试图撤消这个过程。

我尝试了以下方法: eval(object) 我还尝试实现 JSON.parse,并在遇到一个函数时尝试 eval() 每个函数。

我也试过eval("return " + object.function)

这可能吗?

4

1 回答 1

1

You probably want:

eval("(" + object.function + ")");

You cannot put a return statement just somewhere.

function() {} is evaluated as a function declaration, which fails because it has no name. Since the data to be parsed represents a function expression, like var f = function() {}, you need to put () around it, so that it is evaluated as an expression.

于 2011-10-19T15:05:43.913 回答