С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765

Время жизни объекта

11.12.2022, 19:25. Показов 795. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть метод, который:
1. Создаёт ResizeObserver.
2. Создаёт для него анонимный метод-обработчик.
3. Запускает прослушивание событий.
4. Сохраняет ссылку на созданный экземпляр ResizeObserver в свойства того элемента, размеры которого отслеживаются.

Если этот 'divElement', который был передан в метод, в какой-то момент удаляется из DOM, то:
1. Нужно ли явным образом выполнять 'disconnect' для того ResizeObserver, для которого был выполнен метод 'observe' на этот элемент?
2. Удалится ли из памяти экземпляр ResizeObserver, сохранённый в 'divElement.resizeObserver'?

P.S.: и есть ли вообще какие-то очевидные ошибки в этом коде?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
window.subscribeResize = (divElement, eventTarget) => {
 
    divElement.resizeObserver = new ResizeObserver(function () {
        eventTarget.invokeMethodAsync('SizeChanged', divElement.clientWidth, divElement.clientHeight);
    });
 
    divElement.resizeObserver.observe(divElement);
};
 
window.unsubscribeResize = (divElement) => {
    divElement.resizeObserver.disconnect();
    divElement.resizeObserver = null;
};
Добавлено через 6 минут
Если сократить до такого, не будет ли каких-нибудь утечек памяти при удалении отслеживаемых элементов?
JavaScript
1
2
3
4
5
6
7
subscribeResize = (divElement, eventTarget) =>
    new ResizeObserver(() =>
        eventTarget.invokeMethodAsync(
            'SizeChanged',
            divElement.clientWidth,
            divElement.clientHeight))
        .observe(divElement);
Добавлено через 9 минут
И ещё отдельный вопрос - возможно ли как-то самостоятельно проконтролировать время жизни 'ResizeObserver'?

Т.е. вот сделал какой-то минимальный пример на базовом HTML+JS, добавил туда такой обработчик, потом по кнопке удалил элемент из дерева. Где/как увидеть, что созданный ранее экземпляр 'ResizeObserver' был остановлен и удалён из памяти?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2022, 19:25
Ответы с готовыми решениями:

Время жизни Куки
Добрый день, ребят! Подскажите пожалуйста, почему у меня не удаляется кука в хроме и мозиле? Причем в Яндекс.браузере работает как надо... ...

Как изменить время жизни cookie в angularJs
как или каким образом изменить время жизни cookie? ели я правлии поинмая там сотит ;expires=Thu, 01 Jan 1970 00:00:00 GMT и время жизни...

Время жизни объекта
Доброго времени суток, объясните пожалуйста, как можно продлить время жизни объекта, который создан локально. В данном случае - есть...

1
Эксперт .NET
 Аватар для Usaga
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,015
12.12.2022, 06:12
Цитата Сообщение от kotelok Посмотреть сообщение
2. Удалится ли из памяти экземпляр ResizeObserver, сохранённый в 'divElement.resizeObserver'?
Можно же в DevTools снять дамп кучи и посмотреть. По идее, насколько это видел я, ссылки на элемент DOM'а "слабые" и протухают с удалением элементов из этого DOM'а.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2022, 06:12
Помогаю со студенческими работами здесь

Время жизни временного объекта
std::ostringstream os; std::string* str = &os.str(); //временный объект "живёт" только в этом выражении ...

Время жизни static объекта
Приветствую, Что то я запутался с проклятым static, помогите. Дано: public class Main extends Activity{ public static...

Время жизни объекта класса
Всем привет! Вот возник у меня вопросс с ООП и разработкой больших программ. Большие ООП программы могут иметь много классов. Например...

Время жизни временного объекта
можно ли передать временный объект в функцию по ссылке? void f1(int & ); ..... int main() { f1(int());

Деструкторы и время жизни объекта
Вопрос 1 Дан класс Weather с отладочным выводом в конструкторе и деструкторе: class Weather { public: Weather(const string&...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru