window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', /* how to refer to this function? */);
}, false);
Antwort
Namen Ihrer Funktion.
function f(e) {
MyClass.shutdown();
window.removeEventListener('unload', f);
}
window.addEventListener('unload', f, false);
bearbeiten ich denke, das wird auch funktionieren. Guter Punkt Kobi!
Nun, ich bin mir dessen bewusst, aber ich möchte die anonyme Funktion nicht umbenennen ... Ich mag es so wie es jetzt ist. – Pablo
@Michael - die Funktion kann lokal benannt werden, innerhalb ihrer Schließung. Es ist eine kleine Veränderung. – Kobi
@Michael: Benennen Sie Ihre Funktion ist bei weitem * der beste Weg, um sich selbst zu nennen. Die Verwendung von 'arguments.callee' ist bei den meisten aktuellen Implementierungen (zwischen 2x und 10x - ja, wirklich) dramatisch langsamer und wird nicht mit dem neuen" strict mode "von ECMAScript funktionieren (mit dem Sie vielleicht anfangen möchten, es zu verwenden) Irgendwann). Der Performance-Aspekt spielt nun keine Rolle mehr, wenn Sie einen 'Onload'-Handler aushängen, sondern nur darauf hinweisen, falls Sie das Pattern an anderer Stelle anwenden. –
Howto Verwendung der Rekursion auf Anonyme Funktionen
Können sagen wir eine anonyme Fakultäts-Funktion haben, und wir wollen, dass es rekursiv tun. Wie nennen wir eine Funktion ohne Namen? Nun, in JavaScript enthält die Eigenschaft arguments.callee einen Zeiger auf die gerade ausgeführte Funktion, was bedeutet, dass sich eine anonyme Funktion tatsächlich selbst aufrufen kann.
alert((function(n){ if(n <= 1){return 1;}else{return n*arguments.callee(n-1);}})(10));
so wäre es nur 'window.removeEventListener ('entladen', arguments.callee) '? – Pablo
@Michael: Mit zwei "l" s, aber ja. Aber im Allgemeinen ist das kein guter Weg; Siehe meinen Kommentar zu Ykaganovichs Antwort. –
Das ist die Antwort! Ich wünschte wirklich, dass dies gewählt würde anstelle des aktuellen. –
Ich habe das nicht versucht, aber wie wäre es, den RemoveEventListener-Methodenaufruf in MyClass selbst zu verschieben. Die Methode wird nicht anonym sein, aber Sie werden den globalen Namespace nicht verschmutzen, und sie wird Teil der Klasse sein, die sie manipuliert. Sie können es sogar "privat" machen. Ich bin nicht sicher, was Ihr Stil ist, aber ich würde es so etwas schreiben:
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();
Ich denke, es hängt davon ab, was MyClass tut und wie Sie es verwenden.
Die callee
Eigenschaft des arguments
Objekt immer an die aufgerufene Funktion verweist:
window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', arguments.callee);
}, false);
See: MDC: callee
- 1. Wie diese anonyme JavaScript-Funktion umgestalten?
- 2. Passing einen Parameter als Zeiger in JavaScript
- 3. Javascript anonyme Funktion Frage
- 4. Javascript verhindern anonyme Funktion?
- 5. JavaScript anonyme Funktion Ausdruck vs IIFE
- 6. anonyme Javascript-Funktion aufrufen! Funktion vs Funktion
- 7. einen Rückruf in Python Implementierung - einen aufrufbare Verweis auf die aktuelle Funktion übergibt
- 8. Wie einen Verweis auf aktuelle Modul Attribute in Python bekommen
- 9. anonyme Funktion kehrt nicht immer einen Wert
- 10. Senden Parameter auf anonyme Funktion
- 11. einen Parameter JavaScript-Funktion über CSS-Selektor-Passing
- 12. Verweis auf einen Dictionary-Wert
- 13. Javascript anonyme Funktion nicht aktualisieren Variable
- 14. TypeScript anonyme Funktion
- 15. JavaScript: Verweis auf einen lokalen Bereich für Funktionen als Objekt
- 16. undefined Verweis auf Funktion CMake
- 17. Passing JavaScript-Variablen in PHP Funktion
- 18. Javascript: Warum eine anonyme Funktion hier verwenden?
- 19. Undefinierter Verweis auf Hash-Funktion
- 20. Verweis auf einen Zeiger
- 21. Javascript Anonyme Schließung
- 22. JavaScript Es6 Referenz diese innere Funktion?
- 23. Funktion, die einen Verweis auf ein lokales Objekt zurückgibt
- 24. Passing einen Iterator und Vektor an eine Funktion
- 25. Subskribiert einen Verweis auf const
- 26. Anonyme Funktionsdeklaration Kurzschrift Javascript
- 27. Passing Argumente als Verweis und Anschrift
- 28. Was bedeutet JavaScript-Schließung auf anonyme Funktion und wann geschlossene anonyme Funktionen zu verwenden?
- 29. Undefinierter Verweis auf geerbte Funktion
- 30. Anonyme Funktionsreferenzen in Javascript
bitte später Frage Titel verbessern für die Suche –