Удаление объекта из памяти в javascript
Имеется динамический сайт из 10 страниц (работает по средствам history API ). При переходе на первую страницу динамически подгружается .js файл, который содержит объект, который выполняет определенные действия на странице. То же самое и для других страниц, при переходе на любую из 10 страниц подгружается свой объект со своими методами и свойствами. Так вот, нужно, чтобы при переходе на другие страницы объект безвозвратно удалялся и не висел в памяти. Как правильно удалять объект? Вот так: obj = null; или obj = <>; Или же имеются другой способ, более правильный? Если удалять объекты указанными мной способами, то через какое, примерно, время сборщик мусора окончательно удалит сами объекты? И еще такой вопрос: Если вместо объекта будет функция, то как её правильно удалить? Так: func = null; Я хотел бы положиться на ваш опыт в разработке динамический приложений. Как бы вы реализовали механизм работы подобного приложения?
Отслеживать
задан 8 авг 2015 в 10:12
481 1 1 золотой знак 5 5 серебряных знаков 19 19 бронзовых знаков
Боюсь, что на этот вопрос однозначного ответа просто не существует. Это выполняется у пользователей с разными наборами железа и софта, а сборщик «ничего не должен».
Как удалить элемент из объекта Javascript.

Нужно было удалить из этого объекта элемент black со значением #00000.
Решение:
Сделать это можно довольно просто используя команду delete
Давайте посмотрим, как это выглядит на практике:
delete colors.black; console.log(colors); //Смотрим результат в консоле.

Надеюсь, что это сэкономит вам время. Успехов!
Больше моих уроков по Javascript здесь.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Правильное удаление объекта в JS
В JavaScript объект будет удален когда исчезнет последняя ссылка на него. Т.е. используя «деструктор», полностью удалить объект нельзя — можно только вычистить содержимое.
Ответ написан более трёх лет назад
Нравится 6 1 комментарий

А есть ли вообще хоть какая-то возможность удалить за раз все ссылки на объект?
Например, у меня есть класс User. Происходит login и создается экземпляр для текущего пользователя, ссылки на который разлетаются по разным участкам другим объектам.
Во время logout было бы намного удобнее вызвать что-то наподобие delete someUser; , чтобы не лезть в другие объекты и не присваивать null.
Удаление свойства из объекта в JavaScript

Часто в процессе работы с объектами в JavaScript возникает необходимость удалить одно из его свойств. Возьмем для примера следующий объект:
let user = < "name": "Иван", "age": 30, "occupation": "программист" >;
Бывают ситуации, когда нам необходимо удалить одно из свойств этого объекта, например, «occupation».
В JavaScript для этих целей существует оператор delete . Этот оператор удаляет свойство из объекта.
delete user.occupation;
После выполнения этого кода, если мы обратимся к объекту user , мы увидим, что свойство «occupation» удалено:
console.log(user); //
Оператор delete возвращает true , если операция удаления прошла успешно, и false в противном случае. Однако, стоит отметить, что delete не может удалить свойства, которые являются не настраиваемыми. Это свойства, которые определены как не настраиваемые с помощью метода Object.defineProperty() .
Важно помнить, что delete удаляет свойство из объекта, но не может удалить переменные или функции, объявленные с помощью var , let или const .
С помощью оператора delete можно также удалять элементы массива. Однако, это приведет к тому, что на месте удаленного элемента образуется «дырка», и длина массива при этом не изменится.
let arr = [1, 2, 3, 4, 5]; delete arr[2]; console.log(arr); // [1, 2, <1 empty item>, 4, 5]
Заключение: оператор delete в JavaScript — удобный инструмент для удаления свойств из объекта, но его следует использовать аккуратно, особенно при работе с массивами.