2

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

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

4

1 回答 1

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);
于 2012-06-04T17:49:26.760 回答