我正在创建一个小型画布库,其中我有一个需要引用自身的匿名函数。但是,我不知道该怎么做。我有以下不完整的代码:
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,但它在严格模式下不起作用。还有其他选择吗?
答案 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);