Javascript:将自定义参数传递给回调函数

前端之家收集整理的这篇文章主要介绍了Javascript:将自定义参数传递给回调函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个回调函数设置:
  1. var contextMenu = [];
  2. var context = [ { "name": "name1","url": "url1" },{"name": name2","url: "url2" } ];
  3. for(var i=0; i < context.length; i++) {
  4. var c = context[i];
  5. var arr = {};
  6. arr[c.name] = function() { callback(c.url); }
  7. contextMenu.push( arr );
  8. }
  9. function callback(url) {
  10. alert(url);
  11. }

问题是传递给回调的url值始终是上下文变量中的最后一个值 – 在本例中为“url2”.我期望将特定值传递给回调的每个“实例”,但由于回调似乎记住了相同的值,因此最后一次引用它.

我有点卡住了.任何帮助,将不胜感激.

PS:我使用的是jQuery ContextMenu,根据我的理解,它不支持自定义数据发送到其回调函数.正是在这种背景下,我遇到了这个问题.在这种环境下要克服的任何建议也很有帮助!

解决方法

使用额外的封闭.
  1. arr[c.name] = (function(url) {
  2. return function() { callback(url); }
  3. })(c.url);

有关此主题,请参阅Creating closures in loops: A common mistake和大多数其他questions,现在您的问题也会添加到此池中.

猜你在找的JavaScript相关文章