Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   удаление объектов и тонкая работа с ними(помогите) (https://javascript.ru/forum/misc/10919-udalenie-obektov-i-tonkaya-rabota-s-nimi-pomogite.html)

digitalbrain 28.07.2010 18:18

удаление объектов и тонкая работа с ними(помогите)
 
господа, вы моя последняя надежда) возможно ли вобще в JS удалить сам объект ,а не только его его свойства. Вообще раскажу суть проблемы: пишу библиотеку для добавления псевдо окон с drag n drop и т.д , но внезапно дошло что JS не С и не делфи и тут я плаваю. и так есть объект GUI_Window . в нем всякие хенделы div'ов для окна, методы обработки - нечего необычного короче....создал метод Free. в нем удаляю с DOM сами дивы этого экземпляра и другие дочерние экземпляры других объектов (к примеру экземпляр кнопки закрытия окна) потом бегаю по всех свойствах его и удаляю их delete obj[m]; пытаюсь занулить переменную delete obj; obj=null вернет false -ну так она вызывалась с var delete this; вернет true , и все на этом. но по идее экземпляр живет дальше( Прошу вас, может кто нибудь написать пример такой каждую сек создается экземпляр который добавляет в документ div который движется горизонтально и удаляются при выходе за 500 пикселей. Плиз не одну неделю гуглю и по форумах хожу!

digitalbrain 28.07.2010 18:32

а и еще проблема с setInterval с метода - вызываю setinterval(obj.doWork,1000) но ето выходит не совсем правильно

Panzermaus 28.07.2010 19:46

В JS есть GC. Пропадает последняя ссылка на объект, память освобождается. Единственное исключение - циклическая ссылка, когда DOM element держит ссылку на JS-объект, а JS-объект - на element (цикл может быть длинее; замыкания тоже надо учитывать). В этом случае они зависают, даже если element удален из DOM, а ссылок на JS-объект больше нет. Поэтому циклические ссылки нужно разрывать, когда они станут не нужны. После этого и element, и объект будут корректно подобраны GC.

Цитата:

Сообщение от digitalbrain
а и еще проблема с setInterval

setInterval(function() {
    obj.doWork(); 
}, 1000);

digitalbrain 28.07.2010 20:57

а не существует ли какого софта -менеджера памяти чтоб можно было смотреть фактическое использование памяти при выполнении скрипта-утечки...мож много хочу гг как же мне ловить утечки =( firebug такого не умеет(

Kolyaj 28.07.2010 21:17

Цитата:

Сообщение от Panzermaus
В этом случае они зависают

Кто они? В этом случае только IE течёт.


Часовой пояс GMT +3, время: 08:12.