Я работаю над библиотекой, которая имеет:
- Некоторые довольно сложные циклические ссылки.
- Регистрирует различные прослушиватели событий.
- Использует некоторые ( объекты в единственном стиле) для глобальных кэшей
Эти свойства означают, что куча вещей в моем приложении вряд ли будет автоматически собрана сборщиком мусора.
Если последняя ссылка на объект получает сборщик мусора, я также хотел бы автоматически отменить регистрацию обработчиков событий, увеличивая вероятность того, что большие зелья библиотеки могут получить сборщик мусора.
В PHP для этого можно использовать метод __destruct
цель. Возможен ли подобный механизм в Javascript?
Вообще говоря, это был бы вымышленный пример моего графика зависимостей:
Parent
- childA
- childB
Parent
в этом сценарии имеет только внешние ссылки так что Javascript может G C этот объект, если он больше не используется, но когда это произойдет, я бы хотел, чтобы Parent сообщил обоим childA
и childB
, что они могут отменить регистрацию своих обработчиков событий и выполнить дополнительную очистку .
Конечно, я мог бы добавить метод release()
или destroy()
к родителю, но я бы хотел, чтобы это работало, не требуя от конечного пользователя явного указания родителю.