Да, если другая ссылка все еще существует:
var obj = {
'1': {...},
'42': {...}
};
var save = obj['1'];
obj = null;
После сбора мусора и не предполагая, что никаких других ссылок были созданы тогда пространства для OBJ и OBJ ['42' ] будет восстановлена, значение сохранено конечно, сохранится.
Mea culpa: как указано в комментариях delete obj
в моем оригинале не действует с obj
был объявлен как var
. Had obj
был глобальным и, следовательно, свойством глобального объекта, delete
работал бы отлично. Чтобы эффективно удалить var, используйте obj = null
. Одна вещь, которую я изучил, это было то, что delete
оператор и возвращает true
или false
.
Предполагая, что ничто иное не имело дескриптора для 'obj' или каких-либо из этих свойств, их в конечном итоге следует получить GC. Обычный подход заключается в том, чтобы убрать вещи на «null», а не удалять их. Будьте особенно осторожны при работе с узлами DOM, ссылки на них могут зависать, особенно в «серфирных браузерах». Особое внимание уделяйте циклическим ссылкам с объектами DOM (foo = document.body; document.body ['data-blah'] = foo). –