我正在创建一个小型 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 中存在一个错误,其中匿名函数作为外部作用域中的声明函数泄漏,但这里不应该出现此问题,因为外部作用域无论如何都是空的。
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);
关于JavaScript 从函数内部引用匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885636/