如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
How to pass callback function definitions as parameters while evaluating a JavaScript using eval()?
我有一个json对象,它存储了一个JavaScript say
var jsonObj = {
"js": "var x=1;'n callback(x);"
}
现在要执行这个 JavaScript,我需要提供一个回调的实现。假设我们的回调只打印值 x。
那么我应该如何使用 jsonObj 进行调用.js以便给定的 javascript 执行并打印 x 的值(回调打印值)。
我尝试了 eval 函数,但要么我的语法错误,要么这里根本没有使用 eval。
任何帮助,不胜感激。谢谢!!
注意:如果有帮助,我实际上是在使用 gwt 编写一个 Firefox 插件。这种代码的平静是作为原生JavaScript函数编写的。
假设你想传入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
相关文章:
- JavaScript回调函数
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 如何正确地将参数传递给RequireJS回调函数
- 回调函数在python代码中离线
- 从AJAX回调函数中分离数据
- 赋值后的回调函数
- 如何在javascript回调函数中返回多个变量
- 函数表达式,返回回调函数
- 等待回调函数执行
- JavaScript回调函数和Google Feed API
- 如何从ajax成功回调函数中读取javascript变量
- 正在保存JavaScript内部回调函数中的值
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在javascript中添加带有回调函数的按钮点击事件作为window.conf
- 在Golang回调函数中启用CORS
- 在初始函数完成之前调用回调函数
- jQuery Mobile:如何在$.Mobile.changePage之前运行回调函数
- 即使使用回调函数也无法返回值
- 为什么prototypjs观察到回调函数有绑定