2015-03-05 5 views

risposta

25

JavaScript utilizza la garbage collection per eliminare automaticamente gli oggetti quando non vengono più referenziati. Non esiste un concetto di distruttori o finalizzatori.

Non è possibile osservare quando un garbage collector elimina un oggetto, né è prevedibile.

+3

La raccolta dei dati inutili può essere prevenuta se un timer, un callback o un listener di eventi è ancora collegato all'oggetto da eliminare. È anche possibile ottenere errori se il callback/listener esiste ancora ma l'oggetto no. Se vuoi essere assolutamente sicuro di poter scrivere il tuo metodo di distruttore e chiamarlo prima di eliminare l'oggetto. – Kokodoko

+5

Questa non è una risposta corretta. Gábor Lupák più che altro sa che c'è una raccolta di rifiuti in corso lì. Anche con un garbage collector, a volte è necessario rilasciare alcuni riferimenti di lunga durata in punti specifici durante l'esecuzione dell'app in modo che la risorsa di riferimento possa essere idonea per la garbage collection o almeno che non vi siano perdite di memoria. Il mio suggerimento è quello di creare un'interfaccia (esempio: interfaccia Rilevabile {} e definire un metodo chiamato release() e magari un flag chiamato rilasciato che è possibile utilizzare per impedire l'esecuzione di release() più di una volta. – asiby