Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Еще раз про очистку массива в js(интересный случай) (https://javascript.ru/forum/misc/53648-eshhe-raz-pro-ochistku-massiva-v-js-interesnyjj-sluchajj.html)

OlegUP 12.02.2015 09:44

Еще раз про очистку массива в js(интересный случай)
 
Добрый день, уважаемые новички и ниндзи!
Почти каждый виджет в моем проекте, навешен его реализующий класс, во время рендеринга виджетов менеджер объектов содержащий массив экземпляров классов виджетов, этот массив чистит, и заполняет заново у меня это прописано вот так:
this.widgets = []; // далее в цикле по селекторам создает через new для блоков виджетов функции их обрабатывающие

В одном виджете я заметил, что при нажатии на кнопку, после которой происходит переинициализация массива widgets действие при следующем клике(n - ном клике) выполяется 2^(n-1) раз, пофиксил отвязкой handler'а перед вызовом функции реинициализации менеджера, но выходит, что объекты-функции из массива не удаляются, а это ест память, как это объяснить и исправить? :help:

OlegUP 12.02.2015 09:47

Сейчас протестил, и
this.widgets.length = 0

не помогает

Erolast 12.02.2015 09:54

Цитата:

далее в цикле по селекторам создает через new для блоков виджетов функции их обрабатывающие
Покажи подробней

И зачем тебе вообще этот массив?

OlegUP 12.02.2015 10:00

Массив экземпляров объектов функции виджетов, которые содержат обработчики событий на элементах каждого виджета в себе(на странице может быть несеолько виджжетов одного типа)

Erolast 12.02.2015 10:01

Цитата:

Массив экземпляров объектов функции виджетов
Выражайся нормально. Что за объекты функций? Что за экземпляры объектов?
Цитата:

, которые содержат обработчики событий на элементах каждого виджета в себе(на странице может быть несеолько виджжетов одного типа)
Зачем?

OlegUP 12.02.2015 10:02

даже проход с удалением и реинициализацией нулем не помог

OlegUP 12.02.2015 10:05

Цитата:

Почти на каждый виджет в моем проекте, навешен его реализующий класс, во время рендеринга виджетов менеджер объектов содержащий массив экземпляров классов виджетов, этот массив чистит, и заполняет заново
все итак уже объяснил вроде

OlegUP 12.02.2015 10:05

Цитата:

Почти каждый виджет в моем проекте, навешен его реализующий класс, во время рендеринга виджетов менеджер объектов содержащий массив экземпляров классов виджетов, этот массив чистит, и заполняет заново
все итак уже объяснил вроде

OlegUP 12.02.2015 10:10

Какая разница зачем и как сделано, сделано все исходя из требований к проге, проще говория есть массив объектов которые содержат методы для работы с виджетом, вопрос в другом, почему после чистки массива некоторые обработчики срабатывают 2, 4, 8, 16... раз

Erolast 12.02.2015 10:10

Цитата:

все итак уже объяснил вроде
Нет, ты объяснил, какие с этим массивом производятся манипуляции, но ты не объяснил, зачем он вообще нужен.

Цитата:

есть массив объектов которые содержат методы для работы с виджетом
Еще раз - зачем?
Цитата:

Какая разница зачем и как сделано
Такая, что все через жопу сделано.

Цитата:

вопрос в другом, почему после чистки массива некоторые обработчики срабатывают 2
Потому что, очевидно, с самих элементов ты ссылки на обработчики не снимаешь.

Цитата:

Цитата:

далее в цикле по селекторам создает через new для блоков виджетов функции их обрабатывающие
Покажи подробней


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