Курсы javascript
Если очень хочется то testClassObj = null;
Самоудалиться ты не сможешь, можешь разве что подчистить все свойства и методы оставив пустой объект.
__________________
08.09.2014, 11:10
Интересующийся
Регистрация: 05.08.2014
Сообщений: 16
Нулл будет работать? Где-то читал что память не освобождается, где-то что освобождается, и еще слышал что это увеличивает шанс того, что сборщик мусора займется удалением.
А если не самоудаляться, а мутить отдельную функцию — это норма?
08.09.2014, 11:18
Регистрация: 12.12.2012
Сообщений: 1,398
Straj,
Объект удаляется когда на него нет ссылок. Если к объекту нельзя получить доступ — сборщик сожрет его.
08.09.2014, 11:30
Регистрация: 02.01.2010
Сообщений: 6,458
Как верно заметил tsigel, главное — не оставлять ссылок. В ручную за исключением редких конкретных случаев удалять смысла нет. Функция закончит работу и объект исчезнет.
(Правда не в приведённом вами куске кода, ибо в нём testClassObj объявлен без var т.е. в глобальной области видимости)
Как полностью удалить экземпляр класса?
Всем привет. Я создаю экземпляр класса, который в свою очередь создает несколько других экземпляров, куча ссылок, переменных, таймеры и т.д. Созданный экземпляр я складываю в массив. Как мне полностью удалить экземпляр класса? Пытался делать this.arrInstance[i] = null
но ничего не удаляется, таймеры как шли так и идут, все данные как были так и есть.
Неужели нужно все зависимости удалять вручную?
- Вопрос задан более двух лет назад
- 629 просмотров
Комментировать
Решения вопроса 2
Редактирую ответы на 2 + 2 по 4 раза
таймеры как шли так и идут
все данные как были так и есть
Ответ написан более двух лет назад
Нравится 1 1 комментарий
Дмитрий @Tim308 Автор вопроса
Как локально удалить таймер я знаю :-). За ссылки спасибо.
Сергей Соколов @sergiks Куратор тега JavaScript
Таймеры щелкают не в классе, где их создали, а в глобальном объекте window – это его методы setTimeout() , setInterval() . Так что удалив какой-то свой объект, таймеры не погасить.
Надо сохранять id созданных таймеров и выключать их через clearTimeout() , clearInterval()
Ответ написан более двух лет назад
Дмитрий @Tim308 Автор вопроса
У меня все еще проще, созданные таймеры хранятся в классе собственно в этом классе их и прибить можно.
Тут скорее вопрос был можно ли экземпляр удалить разом, теперь окончательно убедился что нет.
Сергей Соколов @sergiks Куратор тега JavaScript
Дмитрий, ну, можно его в отдельном веб-воркере поднимать, и убивать воркер, наверное.. )
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- JavaScript
- +1 ещё
Как создать форму калькулятор отправкой на емайл?
- 1 подписчик
- 10 минут назад
- 17 просмотров
Как удалить экземпляр класса?

Дед Герасим, удалять класс? Как вы себе это представляете? Что вообще хотите реализовать? В данном контексте удаление класса выглядит бессмысленно.
Но вообще для удаления объекта
del объект

Иван Фурсов @KirasiH Автор вопроса
мне нужно заделать так чтобы сборщик мусора удалил класс а как это сделать я не знаю
b1 = But(self.root, 1) b2 = But(self.root, 2) del b1 del b2
удалит оба эти объекта класса But

Дед Герасим, Судя по всему, вы не до конца понимаете, что такое «экземпляр класса». Если описывать текущий функционал класса But. То это почти та же обычная функция, которой передают параметр со ссылкой на главное управление визуалом окна (я старался как это описать словами), self.root. Из-за чего, все изменения в получаемом окне происходят не из-за какого-то необычного эффекта класса. А просто буд-то обычная функция, которая изменила что-то в основном коде.
Т.е. чтоб удалить те кнопки что уже существуют, используйте для этого соответствующие методы tkinter.

Иван Фурсов @KirasiH Автор вопроса
Я создаю объекты. Сколько их я не знаю! Может 1 может 1000 в зависимости от внешних факторов. Объект этот набор из двух кнопок и пару строчек текста. Мне нужно чтобы эти объекты удалялись по нажатию кнопки.
Например: есть 2 объекта которые выводят «текст(кушать) кнопка(да) кнопка(нет)» и «текст(за пенсией) кнопка(да) кнопка(нет)», нужно чтобы они удалялись по нажатию на кнопку(удалить объекты)
Как уничтожить экземпляр класса в JS? Как контролировать ссылки на объект? [дубликат]
Достаточно ли присвоить экземпляру класса null или undefined ? Или для этого нужно использовать delete varName ? Есть например синглтон класс,в разных участках приложения, я обращаюсь к экземпляру этого класса за данными, когда все данные получены возникает необходимость уничтожить этот экземпляр. У класса создаю функцию
. destroy() < instance = null; >.
Это вообще законно? Например в этом экземпляре класса хранились какие-то важные данные, после присвоения этому экземпляру класса null, undefined, 0, false, », delete varName можно ли эти данные вытащить из памяти, в момент когда еще не все ссылки исчезли и сборщик мусора не уничтожил переменную? Объясните как контролировать ссылки на объект и помогать сборщику мусора его ликвидировать? Как найти все места в коде, использующие этот объект?
Отслеживать
задан 27 июл 2019 в 7:13
305 2 2 серебряных знака 10 10 бронзовых знаков
– user256824
27 июл 2019 в 7:22
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
delete , присвоение null , undefined и т.п. не имеет прямого результата в виде удаления объекта из памяти. Другими словами, вам никто не может гарантировать что объект будет удалён из памяти при выполнении вышеописанных действий.
JS удаляет объекты автоматически как только счётчик ссылок на объект (aka количество переменных, ссылающихся на объект) достигает нуля. Делается это при помощи специального механизма, который называется Garbage Сollector (процесс называется Garbage Сollection). Это внутренний механизм интерпретатора. Программист не обладает средствами прямого влияния на его работу. Например, программиста не может выполнить garbage collection по своей прихоти. Или как-то сообщить сборщику мусора, о том что вот именно этот объект нужно удалить несмотря на то что на него остались ссылки.
Если следовать некоторым рекомендациям, то вопрос отсутствия механизмов управления памятью перестаёт быть острой проблемой. Вот пара ссылок по теме:
- https://habr.com/en/post/309318/
- https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/