window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', /* how to refer to this function? */);
}, false);
Répondre
Nom de votre fonction.
function f(e) {
MyClass.shutdown();
window.removeEventListener('unload', f);
}
window.addEventListener('unload', f, false);
Modifier Je pense que cela fonctionnera aussi. Bon point Kobi!
window.addEventListener('unload', function f(e)
{
MyClass.shutdown();
window.removeEventListener('unload', f);
}, false);
Eh bien je suis au courant de celui-là, mais je ne veux pas changer la fonction anonyme à nommé ... J'aime la façon dont il est maintenant. – Pablo
@Michael - la fonction peut être nommée localement, dans sa fermeture. C'est un petit changement. – Kobi
@Michael: Nommer votre fonction est * de loin * la meilleure façon de vous permettre de l'appeler. L'utilisation de 'arguments.callee' est considérablement plus lente sur la plupart des implémentations actuelles (entre 2x et 10x - oui, vraiment), et ne fonctionnera pas avec le nouveau" mode strict "d'ECMAScript (que vous pouvez commencer à utiliser sur quelque point). Maintenant, l'aspect performance n'a pas d'importance pour décrocher un gestionnaire 'onload', mais juste le signaler au cas où vous appliqueriez le pattern ailleurs. –
récursion Howto utilisation sur les fonctions anonymes
Disons que nous avons une fonction factoriel anonyme et nous voulons le faire de manière récursive. Comment appelons-nous une fonction sans nom? Bien en Javascript, la propriété arguments.callee contient un pointeur sur la fonction en cours d'exécution, ce qui signifie qu'une fonction anonyme peut, en effet, s'appeler elle-même.
alert((function(n){ if(n <= 1){return 1;}else{return n*arguments.callee(n-1);}})(10));
il serait donc juste 'window.removeEventListener ('décharger', arguments.calee) '? – Pablo
@Michael: Avec deux "l" s, mais oui. Mais en général, ce n'est pas un bon moyen de le faire; voir mon commentaire sur la réponse de ykaganovich. –
Ceci est la réponse! Je souhaite vraiment que ce soit choisi à la place de celui qui est actuellement. –
Je ne l'ai pas essayé, mais que diriez-vous déplacer la méthode removeEventListener appel en MyClass lui-même. La méthode ne sera pas anonyme, mais vous ne polluerez pas l'espace de noms global et il fera partie de la classe qu'il manipule. Vous pouvez même le rendre "privé". Je ne suis pas sûr de ce que votre style est, mais je l'écris quelque chose comme ceci:
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();
Je suppose que cela dépend de ce que MyClass fait et comment vous l'utilisez.
La callee
propriété du arguments
objet toujours fait référence à la fonction appelée:
window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', arguments.callee);
}, false);
Voir: MDC: callee
- 1. javascript trouver référence anonyme
- 2. Javascript fonction anonyme question
- 3. javascript champ de fonction anonyme
- 4. Comment/quand cette fonction anonyme est invoquée?
- 5. À quoi fait référence cette fonction dans cette fonction?
- 6. Passage d'un groupe typé anonyme à une fonction
- 7. Javascript empêche la fonction anonyme?
- 8. Passage de Vbscript à Javascript
- 9. Comment puis-je appeler cette fonction à l'intérieur de ce javascript anonyme? (Exemple TinyMce)
- 10. Le passage d'un type anonyme à UpdateModel/TryUpdateModel dans ASPNETMVC
- 11. Erlang: comment puis-je faire référence à une fonction anonyme dans le corps?
- 12. Javascript: Pourquoi utiliser une fonction anonyme ici?
- 13. Arguments de la fonction anonyme JavaScript
- 14. Fonction jQuery Ready Fonction Passage aux fonctions Javascript
- 15. Le passage d'un paramètre comme un pointeur en JavaScript
- 16. C++ passage par référence: erreur: aucune fonction correspondante pour l'appel
- 17. Comment personnaliser cette fonction javascript?
- 18. Passage d'une référence à un constructeur
- 19. Javascript La fonction récursive semble sortir après le premier passage
- 20. passage de paramètres Javascript dans la fonction
- 21. Passage de html rendu à une fonction javascript
- 22. Attribution d'un nom à une fonction anonyme
- 23. Recursion et passage par référence
- 24. Passage d'une référence à une classe
- 25. setTimeout pas retardé avec une fonction anonyme
- 26. fonction d'appel d'objets de référence en Javascript
- 27. Impossible de résoudre la méthode objet Javascript cette référence
- 28. Que passer à cette fonction?
- 29. JavaScript: Uncaught ReferenceError: confirm_Logout n'est pas défini (fonction anonyme)
- 30. Javascript, fonction de conception se référence
s'il vous plaît améliorer le titre de question pour la recherche plus tard –