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

从该函数内部对匿名函数的JavaScript引用,javascript,events,Javascript,Events,我正在创建一个小型canvas库,其中有一个匿名函数需要引用自身。然而,我不知道该怎么做。我有以下不完整的代码: var removeDragHandler = (function (object) { return function (e) { if (typeof object["dragend"] === "function") { object["dragend"](e); } removeEvent({ element: window

我正在创建一个小型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中存在一个bug,其中匿名函数在外部作用域中作为声明函数泄漏,但这不应该出现在这里,因为外部作用域无论如何都是空的

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);

如果您的问题只是引用匿名函数,那么您应该请求匿名函数,而不是“自删除事件”。@Bergi:P是这样的,我必须阅读两遍才能从中获得实际有用的信息,当然我可以替换它?????使用arguments.callee,但在严格的mode@Bergi-你说得对,我更新了我的帖子,删除了所有不相关的信息。当然,我不敢相信我自己没有想到这一点。我真的不担心旧的IE版本,因为这是canvas元素的一个小库。旧的IE版本不支持canvas元素,因此根本无法使用此库。谢谢你的帮助!我认为您可以通过将函数存储在变量中而不是声明它来避免IE泄漏。只需执行“var once;return once=function…”@Jbm true,但它不是NFE:(我可以在IE中获得泄漏到外部作用域的内部函数的链接吗?