2012-04-25 15 views

risposta

1

JavaScript utilizza la raccolta dei rifiuti per recuperare la memoria occupata da corde, oggetti, array e funzioni che non sono più in uso. Questo ti libera, da parte del programmatore, di dover esplicitamente deallocare la memoria di ed è una parte importante di ciò che rende la programmazione di JavaScript più semplice della programmazione C, ad esempio.

Riferimenti:Check this for more e an answer on SO.

problemi di memoria in caso si registrano meccanismo 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}); 
} 

Nel primo caso, una nuova funzione (anonimo) viene creata ad ogni ciclo turno. Nel secondo caso, la stessa funzione dichiarata in precedenza viene utilizzata come gestore di eventi. Ciò si traduce in un minore consumo di memoria. Inoltre, nel primo caso, poiché non viene mantenuto alcun riferimento alle funzioni anonime, non è possibile chiamare element.removeEventListener perché non abbiamo un riferimento al gestore, mentre nel secondo caso è possibile eseguire

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

Entrambi i casi fanno schifo btw, stai registrando un evento su ogni elemento quando è possibile utilizzare il bubbling degli eventi. –

Problemi correlati