Ho creato un gioco HTML5 composto da molti piccoli livelli. Quando il giocatore arriva alle porte, viene caricato un altro livello. Quando un livello è caricarla fondamentalmente solo imposta tutti gli array esempio per []
e poi spinge roba in loro, attraverso la creazione di nuove istanze di cose, ad esempio:In Javascript, dovrei eliminare le istanze del livello precedente dopo averne caricato uno nuovo?
enemies = [] //this has previously been full of pointers from the old level
for (i = 0; i < n_enemies; i ++)
enemies.push(new Enemy());
Ma, si è giunti alla mia attenzione che solo l'impostazione un array pieno di puntatori a []
, in realtà non elimina le istanze! Quindi, javascript lo fa automaticamente? O devo io stesso delete
ogni istanza?
Anche 'delete' è definito solo per le proprietà degli oggetti, quindi javascript non contiene nemmeno un modo per eliminare le variabili dell'array - devi solo presumere che il motore js si occuperà della garbage collection dopo che tutti i riferimenti sono stati rimossi. – wheresrhys
wheresrhys - I membri dell'array sono solo proprietà con nomi numerici. Elimina anche su di essi (ad esempio 'cancella array ['0']' rimuove il primo membro di un array che inizia da zero), ma come dice Jivings, non è necessario qui. – RobG
@RobG - Probabilmente avrei dovuto essere più chiaro - con "variabili di array" intendevo le variabili che sono array, piuttosto che i valori primitivi memorizzati negli array. – wheresrhys