Как грамотно объединить HTML скелет с JS классом в один интерактивный объект который можно динамически загружать/удалять? Сейчас оно уже работает но подозреваю что это можно реализовать как то грамотнее. На сервер загружается JS файл с кучей классов (каждый класс написан для определенного HTML скелета (какой нибудь виджет - график, калькулятор, чат...)). Затем динамически в document страницы добавляется HTML скелет с уникальным ID и через script создаю экземпляр класса который привязываю к загруженному HTML скелету. (Если скелет можно собрать то он собирается конструктором класса... но иногда данные приходят уже с сервера и необходимо работать с готовым скелетом). Если удалить скелет или вместо него подгрузить другой, экземпляр объекта класса скелета у которого пропал скелет удаляется. Мне не нравится как сейчас работает самоликвидация экземпляра объекта... а точнее проверка на отсутствие скелета. Сейчас самоликвидация запускается если возникает ошибка обращения к скелету + таймер-пустышка который получает скелет (на случай если JS объект ждет событий от элемента скелета которого уже нет)
Для более грамотной реализации я бы порекомендовал использовать паттерн наблюдателя (Observer pattern) для отслеживания событий, связанных с удалением или изменением скелета. Вы можете создать наблюдателя, который будет следить за этими событиями и автоматически удалять объект класса при необходимости.
Для этого вам нужно будет добавить методы в классы скелетов, которые будут вызываться при удалении или изменении скелета. Далее, в самом классе объекта вы можете добавить методы для подписки на события удаления и изменения скелета, и автоматически удалять себя при получении соответствующих событий.
Таким образом, вы сможете избежать использования таймеров и дополнительной логики для самоликвидации объектов, и сделать ваш код более чистым и модульным.
.
Для более грамотной реализации я бы порекомендовал использовать паттерн наблюдателя (Observer pattern) для отслеживания событий, связанных с удалением или изменением скелета. Вы можете создать наблюдателя, который будет следить за этими событиями и автоматически удалять объект класса при необходимости.
Для этого вам нужно будет добавить методы в классы скелетов, которые будут вызываться при удалении или изменении скелета. Далее, в самом классе объекта вы можете добавить методы для подписки на события удаления и изменения скелета, и автоматически удалять себя при получении соответствующих событий.
Таким образом, вы сможете избежать использования таймеров и дополнительной логики для самоликвидации объектов, и сделать ваш код более чистым и модульным.