JavaScript 从函数内部引用匿名函数

标签 javascript events

我正在创建一个小型 Canvas 库,其中有一个需要引用自身的匿名函数。但是,我不知道该怎么做。我有以下不完整的代码:

var removeDragHandler = (function (object) {
  return function (e) {
    if (typeof object["dragend"] === "function") {
      object["dragend"](e);
    }
    removeEvent({
      element: window,
      event: "mousemove",
      callback: object["drag"]
    });
    removeEvent({
      element: window,
      event: "mouseup",
      callback: ????? //What here?
    });
  };
})(object);
addEvent({
  element: window,
  event: "mouseup",
  callback: removeDragHandler
});

当然我可以替换??????与arguments.callee,但它在严格模式下不起作用。还有其他选择吗?

最佳答案

您可以为匿名函数命名。请注意,旧版 IE 中存在一个错误,其中匿名函数作为外部作用域中的声明函数泄漏,但这里不应该出现此问题,因为外部作用域无论如何都是空的。

var removeDragHandler = (function (object) {
  return function once(e) {
    if (typeof object["dragend"] === "function") {
      object["dragend"](e);
    }
    removeEvent({
      element: window,
      event: "mousemove",
      callback: object["drag"]
    });
    removeEvent({
      element: window,
      event: "mouseup",
      callback: once
    });
  };
})(object);

关于JavaScript 从函数内部引用匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885636/

相关文章:

javascript - GetElementById 在 Chrome 中给出 ReferenceError

javascript - 在每个 Promise.then 函数之后执行一个通用方法

javascript - 如何使用 Firebug 的调试器功能?

javascript - 如何在javascript中使用循环获取十六进制颜色数字的完整列表

javascript - Backbone.js:根据点击事件过滤集合

WinForms如何调用按钮上的双击事件?

javascript - 以编程方式操纵浏览历史记录

java - 使用全局事件总线有哪些注意事项?

javascript - 向事件添加 JavaScript 函数调用(例如 'window.resize' ),而不是覆盖已有的内容

c# - 是否有任何理由在引发事件之前将事件分配给局部变量?