Я сделал игру HTML5, которая состоит из множества небольших уровней. Когда игрок добирается до дверей, загружается другой уровень. Когда уровень загрузки его в основном только устанавливает весь экземпляр массив в []
, а затем толкают вещи в них, создавая новые экземпляры вещей, например:В Javascript следует удалить экземпляры предыдущего уровня после загрузки нового?
enemies = [] //this has previously been full of pointers from the old level
for (i = 0; i < n_enemies; i ++)
enemies.push(new Enemy());
Но он пришел к моему вниманию, что только настройкам массив, полный указателей до []
, на самом деле не удаляет экземпляры! Итак, делает ли это javascript автоматически? Или у меня есть delete
каждый экземпляр сам?
Также 'delete' определяется только для свойств объектов, поэтому javascript даже не содержит способа удаления переменных массива. Вы должны просто предположить, что js-движок позаботится о сборке мусора после удаления всех ссылок. – wheresrhys
wheresrhys - Элементы массива - это просто свойства с числовыми именами. Удалить также работает над ними (например, 'delete array ['0']' удаляет первый элемент массива, начинающийся с нуля), но, как говорит Jivings, здесь это необязательно. – RobG
@RobG - Я, вероятно, должен был быть более ясным - с помощью «переменных массива» я имел в виду переменные, которые являются массивами, а не примитивными значениями, хранящимися в массивах. – wheresrhys