window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', /* how to refer to this function? */);
}, false);
Respuesta
Nombre de su función.
function f(e) {
MyClass.shutdown();
window.removeEventListener('unload', f);
}
window.addEventListener('unload', f, false);
Editar creo que esto funcionará también. Buen punto Kobi!
window.addEventListener('unload', function f(e)
{
MyClass.shutdown();
window.removeEventListener('unload', f);
}, false);
bueno, soy consciente de eso, pero no quiero cambiar la función anónima a nombrada ... Me gusta como está ahora. – Pablo
@Michael: la función se puede nombrar localmente, dentro de su cierre. Es un pequeño cambio. – Kobi
@Michael: Nombrar su función es * por mucho * la mejor manera de permitirse llamarlo. El uso de 'arguments.callee' es dramáticamente más lento en la mayoría de las implementaciones actuales (entre 2x y 10x - sí, realmente), y no funcionará con el nuevo" modo estricto "de ECMAScript (que puede encontrar que desea comenzar a usar en algún punto). Ahora, el aspecto de rendimiento no es importante para desenganchar un controlador 'onload', sino solo señalarlo en caso de que aplique el patrón en otro lugar. –
uso Howto recursividad en funciones anónimas
digamos que tenemos una función factorial anónima y queremos hacerlo de forma recursiva. ¿Cómo llamamos a una función sin un nombre? Bueno, en Javascript, la propiedad arguments.callee contiene un puntero a la función que se está ejecutando actualmente, lo que significa que una función anónima puede llamarse a sí misma.
alert((function(n){ if(n <= 1){return 1;}else{return n*arguments.callee(n-1);}})(10));
por lo que sería simplemente 'window.removeEventListener ('descargar', arguments.calee) '? – Pablo
@Michael: con dos "l" s, pero sí. Pero en * general * no es una buena manera de hacerlo; ver mi comentario sobre la respuesta de ykaganovich. –
¡Esta es la respuesta! Realmente desearía que esto fuera elegido en lugar del que está actualmente. –
No he probado esto, pero ¿qué hay de mover el método removeEventListener llamada MiClase en sí mismo. El método no será anónimo, pero no estará contaminando el espacio de nombres global y será parte de la clase que está manipulando. Incluso puedes hacerlo "privado". No estoy seguro de cuál es tu estilo, pero me gustaría escribir algo como esto:
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();
supongo que depende de lo que haga MiClase y cómo lo usa.
El callee
propiedad del objeto arguments
siempre se refiere a la función llamada:
window.addEventListener('unload', function(e)
{
MyClass.shutdown();
window.removeEventListener('unload', arguments.callee);
}, false);
Ver: MDC: callee
- 1. Cómo refactorizar esta función anónima de Javascript?
- 2. JavaScript: ¿Cómo pasar una función anónima como parámetro de función?
- 3. ¿Cómo puedo pasar una referencia a una función, con parámetros?
- 4. ¿Cómo pasar una variable por valor a una función anónima de JavaScript?
- 5. javascript onclick, función anónima
- 6. Javascript llamada a la función anónima
- 7. ¿Cómo pasar el contexto del objeto a una función anónima?
- 8. Nombrar una función anónima
- 9. ¿Cómo llamar a la función anónima actual en PHP?
- 10. C++: ¿Cómo pasar referencia-a-función a otra función?
- 11. Javascript previene la función anónima?
- 12. Cómo pasar la referencia 'this' a una función javascript de una etiqueta <a>
- 13. C#: ¿Cómo pasar null a una función esperando una referencia?
- 14. Desvincular una función anónima
- 15. Javascript recolección de basura función anónima
- 16. ¿Cómo puedo pasar un parámetro de variable a una función anónima utilizando jquery?
- 17. ¿Debo pasar parámetros vacíos a una función de JavaScript?
- 18. Erlang: ¿cómo puedo hacer referencia a una función anónima desde dentro del cuerpo?
- 19. JavaScript - Retorno de la función anónima (varScope)
- 20. Pasar una variable JSP como parámetro a la función javascript
- 21. ¿Cómo pasar parámetros a la clase anónima?
- 22. setTimeout() con cadena o referencia de función (anónima)? speedwise
- 23. Las variables estáticas en una función anónima
- 24. Javascript: ¿Por qué usar una función anónima aquí?
- 25. pasar parámetros a una función prototipo en javascript
- 26. ¿Cómo pasar un parámetro a una función Javascript establecida dinámicamente?
- 27. Cierre vs función anónima
- 28. ¿Cómo puedo pasar un parámetro a esta función?
- 29. Pasar $ (esto) a una función
- 30. Python - Pasar una función a otra función
Por favor, mejorar el título de pregunta para más tarde buscar –