2012-04-25 12 views

Respuesta

1

JavaScript utiliza la recolección de basura para recuperar la memoria ocupada por cuerdas, objetos, matrices y funciones que ya no están en uso. Esto le libera a usted, el programador, de tener que desasignar explícitamente la memoria y es una parte importante de lo que hace que la programación de JavaScript sea más fácil que, por ejemplo, la programación en C.

Referencias:Check this for more y an answer on SO.

problemas de memoria en caso mecanismo MDN

var i; 
var els = document.getElementsByTagName('*'); 

// Case 1 
for(i=0 ; i<els.length ; i++){ 
    els[i].addEventListener("click", function(e){/*do something*/}, false}); 
} 

// Case 2 
function processEvent(e){ 
    /*do something*/ 
} 

for(i=0 ; i<els.length ; i++){ 
    els[i].addEventListener("click", processEvent, false}); 
} 

registrando En el primer caso, una nueva función (anónimo) se crea en cada vuelta del bucle. En el segundo caso, la misma función declarada previamente se utiliza como controlador de eventos. Esto da como resultado un menor consumo de memoria. Además, en el primer caso, dado que no se guarda ninguna referencia a las funciones anónimas, no es posible llamar a element.removeEventListener porque no tenemos una referencia al manejador, mientras que en el segundo caso, es posible hacer

myElement.removeEventListener("click", processEvent, false) 
+1

Ambas carcasas chupan por cierto, estás registrando un evento en cada elemento cuando se puede usar el burbujeo de eventos. –

Cuestiones relacionadas