从该函数内部对匿名函数的JavaScript引用
我正在创建一个小型canvas库,其中有一个匿名函数需要引用自身。然而,我不知道该怎么做。我有以下不完整的代码:从该函数内部对匿名函数的JavaScript引用,javascript,events,Javascript,Events,我正在创建一个小型canvas库,其中有一个匿名函数需要引用自身。然而,我不知道该怎么做。我有以下不完整的代码: var removeDragHandler = (function (object) { return function (e) { if (typeof object["dragend"] === "function") { object["dragend"](e); } removeEvent({ element: window
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中获得泄漏到外部作用域的内部函数的链接吗?