我来到了arguments.callee.caller
这似乎解决了解决问题的方法,解决了匿名函数的问题,但是我并不理解为什么这种情况在某些情况下有效但在其他情况下却没有。
//Example 1
document.addEventListener('click', function(event){
console.log("Example 1");
console.log(arguments.callee.caller);
event.currentTarget.removeEventListener(event.type, arguments.callee.caller);
});
//Example 2
document.addEventListener('click', (function(event){
return function(){
console.log("Example 2");
console.log(arguments.callee.caller);
event.currentTarget.removeEventListener(event.type, arguments.callee.caller);
}();
}));
为什么Example 2
成功解除绑定,但是当我所做的只是返回一个相同的匿名函数时Example 1
没有?