acabo de leer esta pregunta y la respuesta aceptada: What is JavaScript garbage collection?Recolección de basura y JavaScript "eliminar": ¿Es esto exceso/ofuscación, o una buena práctica?
En la respuesta, Noldorin hace referencia algunas pautas de Apple. Aquí está la parte que me preocupa:
Utilice las instrucciones de eliminación. Siempre que cree un objeto usando una nueva instrucción, emparejelo con una declaración de eliminación. Esto garantiza que toda la memoria asociada con el objeto, incluido su nombre de propiedad, esté disponible para la recolección de elementos no utilizados.
Siempre me tomo el tiempo para mantenerme al día sobre las mejores prácticas, especialmente si puedo reducir la huella de memoria de mis scripts. Entonces fui a probar algunas cosas. Si entiendo correctamente, el siguiente es un ejemplo de un objeto que se elimina después de invocar un método.
var thing = function() {
var a_method, and_another;
a_method = function() { /* do stuff */ };
and_another = function() { /* do some other stuff*/ };
this.init = function() { a_method(); and_another(); };
};
delete new thing().init();
Normalmente voy a envolver todo en una función de invocación automática y pasar mis globales al igual que arriba. Todo es igual a como lo haría normalmente, la única diferencia es que agregué el delete
justo antes del new
.
El código funciona de cualquier manera.
Entonces la pregunta es: ¿Estoy haciendo cualquier cosa aquí? ¿Hay algún tipo de beneficio al eliminar una referencia a un objeto que solo existe dentro de un ámbito de función? ¿O solo estoy haciendo que las cosas se vean confusas?
dejé de hacer la recolección de basura al igual que hace diez años :) –