我有一个对象,生成的HTML元素也与对象的数组连接,让我们说我们有一个它的实例。所以当它创建元素时,它还会将以下事件侦听器分配给元素的嵌套部分(类为uploadDelete)。removeEventListener与唯一匿名函数
现在,此事件侦听器需要调用创建它的对象实例的delete方法,并在创建时指定i的值。由于事件在Window下,因此需要将实例与i值一起传递给匿名函数。
因此,这为事件分配了一个非常独特的函数,并且因为delete方法将销毁包含侦听器的元素,所以我希望先删除它;从我读过的话可能会导致泄漏,否则(?)。我也使用严格模式,所以不使用arguments.callee。
file.display.getElementsByClassName('uploadDelete')[0].addEventListener('click',
(function(that,i){
return function() {
that.delete(i);
};
})(this,i), false);
我已经尝试了很多不同的东西,但是当我开始有一个功能,然后将其称为听者的内部函数内部的匿名函数,我想我应该只问就在这里。我可能会解决整体问题,改变其他代码,但如果能够回答这个问题,它仍然有帮助。
下面是我最终在Norguard的答案帮助下做的。由于独特性是从一个对象调用的文件而产生的,我刚刚创建的文件的一个新的属性来存储功能:
file.deleteFunction = (function(that,i){
return function() {
that.delete(i);
};
})(this,i);
file.display.getElementsByClassName('uploadDelete')[0].addEventListener('click',file.deleteFunction, false);
删除功能被调用,然后删除该事件监听器。
这与我开始考虑的事情类似。感谢您的答复,并清除这些事情! – 2013-03-21 21:04:00