1

我有一个存储 JavaScript 的 json 对象说

    var jsonObj = {
      "js": "var x=1;\n   callback(x);"
    }

现在要执行这个 JavaScript,我需要为回调提供一个实现。假设我们的回调只打印值 x。

那么我应该如何使用 jsonObj.js 进行调用,以便给定的 javascript 执行并打印 x 的值(回调打印值)。

我尝试了 eval 函数,但要么我的语法错误,要么这里根本没有使用 eval。

任何帮助表示赞赏。谢谢!!

注意:如果有帮助,我实际上是在使用 gwt 编写一个 firefox 插件。这种平静的代码是作为原生 JavaScript 函数编写的。

4

1 回答 1

2

假设您要传入callback,您将使用Function构造函数而不是eval,并定义参数。

var jsonObj = {
  "js": "var x=1;\n   callback(x);"
};

var f = Function('callback', jsonObj.js);

然后你可以传递函数参数:

f(function(n) { alert(n); }); // 1

http://jsfiddle.net/HWCVD/


构造Function函数被设计成传递给它的最后一个参数是函数的主体,而前面的所有参数都是函数的参数。

因此,如果要添加其他参数,只需将它们提供给Function构造函数即可。

var jsonObj = {
  "js": "var x=y + 1;\n   callback(x);"
};

var f = Function('y', 'callback', jsonObj.js);

然后传递参数:

//  v-"y"
//  v
  f(2, function(n) { alert(n); }); // 3
//         ^
//         ^-"callback" 

http://jsfiddle.net/HWCVD/16

于 2012-05-14T18:33:00.943 回答