Очевидно, что код в его нынешнем виде занимал бы дополнительную память, пока элемент DOM все еще подключен к DOM. Но я предполагаю, что вы спрашиваете, будет ли он продолжать использовать дополнительную память после того, как элемент DOM больше не используется.
Обновление : Благодаря ответу Джоуи (который он с тех пор удалил) я потратил некоторое время на чтение утечек памяти в javascript , и мои предположения приведены в параграфе ниже неверны. Поскольку элементы DOM не используют чистую сборку мусора, круговая ссылка, подобная этой, обычно предотвращает выпуск как элемента DOM, так и объекта javascript. Тем не менее, я считаю, что остальная часть этого ответа все еще верна.
Без глубоких знаний о том, как движки javascript реализуют сборку мусора, я не могу авторитетно говорить на эту тему. Однако мое общее понимание сборки мусора заставляет меня думать, что ваш код будет «безопасным» в том смысле, что после удаления элемента #something
из DOM полученный объект MyClass
будет иметь только ссылку на объект, который не имеет других связей. Алгоритмы графов сборщика мусора должны быть в состоянии определить, что элемент DOM и его объект MyClass
"плавают в пространстве" и не связаны со всем остальным.
Кроме того, jQuery делает все возможное для удаления данных и событий, связанных с данным элементом DOM, после его удаления из DOM. Из документации :
jQuery обеспечивает удаление данных при удалении элементов DOM с помощью методов jQuery и при выходе пользователя из страницы.
Таким образом, предполагая, что вы используете jQuery последовательно, вы получите одностороннюю ссылку только после того, как объект все равно будет удален из DOM, что делает намного более легким возможным для сборщика мусора, чтобы узнать, что он может избавиться от этих предметов.
Так что, если у вас больше нет ссылок на объект MyClass
после удаления элемента DOM, утечки памяти не должно быть.