window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', /* how to refer to this function? */);
}, false);
回答
名称的功能。
function f(e) {
MyClass.shutdown();
window.removeEventListener('unload', f);
}
window.addEventListener('unload', f, false);
编辑我想这也能工作。好点的Kobi!
window.addEventListener('unload', function f(e)
{
MyClass.shutdown();
window.removeEventListener('unload', f);
}, false);
以及我知道这一点,但我不想改变匿名函数命名...我喜欢现在的样子。 – Pablo 2010-05-12 05:09:42
@Michael - 该函数可以在其关闭中进行本地命名。这是一个小小的改变。 – Kobi 2010-05-12 05:13:19
@Michael:给你的函数命名是*迄今为止让你自己调用它的最好方法。在大多数当前实现中,使用'arguments.callee'的速度要慢得多(在2x和10x之间 - 是的,真的),并且不适用于ECMAScript的新“严格模式”(你可能会发现你想开始使用一点)。现在,性能方面对于取消挂载'onload'处理程序并不重要,但只要在其他地方应用模式时指出这一点即可。 – 2010-05-12 05:37:09
HOWTO使用递归的匿名函数
假设我们有一个匿名的阶乘函数,我们要递归做到这一点。我们如何调用没有名字的函数?在Javascript中,arguments.callee属性包含一个指向当前正在执行的函数的指针,这意味着一个匿名函数实际上可以调用它自己。
alert((function(n){ if(n <= 1){return 1;}else{return n*arguments.callee(n-1);}})(10));
所以这将是刚刚'window.removeEventListener ('unload',arguments.calee)'? – Pablo 2010-05-12 05:07:18
@迈克尔:有两个“l”,但是。但在*一般*这不是一个好办法;看到我对ykaganovich的回答的评论。 – 2010-05-12 05:38:56
这就是答案!我真的希望这将被选择,而不是目前的。 – 2013-02-22 07:47:39
我没有试过,但如何移动removeEventListener方法调用到MyClass的本身。该方法不会是匿名的,但不会污染全局名称空间,它将成为它所操作的类的一部分。你甚至可以把它变成“私人”。我不知道你的风格是什么,但我会写这样的事:
var MyClass = function(){
var self = this;
self.shutdown = function(){
window.removeEventListener('unload',self.shutdown,false);
};
self.initialize = function() {
window.addEventListener('unload',self.shutdown,false);
};
return self;
};
var myObject = new MyClass();
myObject.initialize();
我想这要看是什么MyClass的做,你如何使用它。
的arguments
对象总是指调用函数的callee
属性:
window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', arguments.callee);
}, false);
参见:MDC: callee
- 1. 传递一个匿名函数作为参数
- 2. 参考$这个匿名函数的类方法中
- 3. JavaScript:如何将匿名函数作为函数参数传递?
- 4. Javascript匿名函数参数传递(wrox professionnal javascript p188)
- 5. 将多个参数传递给R中的匿名函数
- 6. JavaScript的匿名函数的参数传递
- 7. 如何将参数传递给JavaScript中的匿名函数?
- 8. 将多个参数传递给匿名函数w/call_user_func
- 9. 传递一个在多个参数的函数参数在JavaScript
- 10. Javascript传递参数到函数,这是一个回调
- 11. 传递匿名函数作为参数在JavaScript
- 12. 将JavaScript匿名函数作为参数传递给WebView
- 13. 如何将参数传递给javascript匿名函数
- 14. C++:如何将参考函数传递给另一个函数?
- 15. 将参数传递给一个函数内的函数 - javascript
- 16. 传入javascript函数这个参数HREF
- 17. 我应该传递这个JavaScript函数的参数是什么?
- 18. 将值作为函数参数传递给匿名函数
- 19. 传递一个对象作为函数的参考或指针
- 20. 传递一个带参数的函数
- 21. array_walk一个匿名函数
- 22. 将当前范围的jQuery/plainJS变量/函数传递给从当前范围调用的匿名函数
- 23. JavaScript的参数匿名函数
- 24. JavaScript的参数匿名函数
- 25. 参考无“这个”前言
- 26. 传递函数的参数作为参数传递给另一个函数
- 27. js:无法将参数传递给setTimeOut中的匿名函数
- 28. 如何将参数传递给Kotlin中的匿名lambda函数?
- 29. 如何描述传递匿名函数的参数?
- 30. 如何执行作为参数传递的JQuery匿名函数?
请提高问题的称号,后来搜索 – 2010-05-12 05:06:53