具有相对变量的 JavaScript 回调函数
JavaScript callback function with relative variables
我不完全确定如何表达这个问题,但基本上,我有一个类,button
单击时应该调用传递给它的函数。
button = function(...,callBack) {
//...
this._cb = callBack;
}
button.prototype.callBack = function(e) {
//...
this._cb();
}
然后在其他地方
//on canvas click
e.target.callBack(e);
(我希望这是关于适量的背景,如果需要,我可以提供更多)
所以我遇到的问题是当我动态实例化按钮时,以便它们的回调使用数组中的数据。
for (var i = 0; i < levels.length; i++) {
buttons[buttons.length] = new button(..., function() {drawLevel(levels[i])});
}
然后,当单击它们时,它们运行该回调代码并尝试为 i 找到一些随机值(可能是不使用 var
的 for 循环)并运行该级别。
我的问题是,我如何(不使用 eval)规避这个问题。
谢谢!
我不是 100% 清楚你在问什么,但看起来你会在循环中创建的匿名函数中为 i 获得错误的值(它将永远是 levels.length)
解决这个问题的方法是为每个创建的函数设置不同的作用域,每个作用域中的 i 是循环中 i 的副本
buttons[buttons.length] = new button(..., (function(i){
return function() {drawLevel(levels[i])};
})(i));
相关文章:
- JavaScript回调函数
- 如何在javascript回调函数中返回多个变量
- Google Data API上的OOP Javascript回调方法
- JavaScript回调函数和Google Feed API
- 行上的Primefaces数据表选择javascript回调
- 使用jasmine测试JavaScript回调函数
- 当页面中的某些脚本已经执行时,javascript回调
- 性能惩罚JavaScript回调函数
- JavaScript回调问题
- 需要Javascript回调ajax解释
- 未通过单击按钮调用JavaScript回调
- Google+登录JavaScript回调问题
- 在对象内完成ajax调用后触发Javascript回调
- 独立线程上的Javascript回调函数
- 循环函数(Javascript回调帮助)
- 使用JavaScript回调函数了解变量作用域和闭包
- 带有参数的Javascript回调函数
- 带有数据库的Javascript回调
- Node.js/express,javascript回调函数未执行
- javascript回调如何知道它们的参数