Я только что прочитал этот вопрос и принятый ответ: Что такое сборка мусора JavaScript?
В ответе Noldorin указаны некоторые рекомендации Apple. Вот часть, которую я интересую:
Используйте инструкции delete. Всякий раз, когда вы создаете объект, используя новый оператор, соедините его с инструкцией delete. Это гарантирует, что вся память, связанная с объектом, включая его имя свойства, доступна для сбора мусора.
Я всегда уделяю много времени, чтобы поддерживать передовые методы, особенно если я могу уменьшить объем памяти моих сценариев. Поэтому я пошел, чтобы проверить некоторые вещи. Если я правильно понимаю, ниже приведен пример объекта, который удаляет себя после вызова метода.
var thing = function () {
var a_method, and_another;
a_method = function() { /* do stuff */ };
and_another = function() { /* do some other stuff*/ };
this.init = function() { a_method(); and_another(); };
};
delete new thing().init();
Обычно я обернуваю все в функцию self-invoking и передаю свои глобальные переменные, как описано выше. Все то же самое, что я обычно делал, только разница заключалась в том, что я добавил delete
прямо перед new
.
Код работает в любом случае.
Итак, вопрос: я что-то здесь делаю? Есть ли какая-то польза для удаления ссылки на объект, который существует только внутри области функций? Или я просто заставляю вещи выглядеть запутанными?