我有一个json对象,它存储一个JavaScript说
var jsonObj = {
"js": "var x=1;\n callback(x);"
}
现在要执行这个JavaScript,我需要提供一个回调实现。让我们说我们的回调只打印值x。
我应该如何使用jsonObj.js进行调用,以便给定的javascript执行并打印x的值(回调打印值)。
我尝试了eval函数但是我的语法错误或者根本就没有使用eval。
感谢任何帮助。谢谢!
注意:如果有帮助,我实际上是在使用gwt编写一个firefox插件。这种代码的和平是作为本机JavaScript函数编写的。
答案 0 :(得分: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
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"