JavaScript函数内部对匿名函数的引用

时间:2012-06-04 17:41:53

标签: javascript events

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

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,但它在严格模式下不起作用。还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

您可以为匿名函数指定名称。请注意,旧版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);