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