Показать сообщение отдельно
  #423 (permalink)  
Старый 06.12.2013, 20:48
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Сообщение от kobezzza Посмотреть сообщение
У меня например все виджеты наследуются от класса Defer, который реализует АПИ: this.setTimeout, this.setInterval, this.setImmediate, this.ajax, this.proxy, this.setQueue и т.д. т.е. используя это АПИ вместо голых вызовов мы полностью устраняем проблему возможных утечек памяти и багов, т.к. сами виджеты знают об этих обработчиках и отменяют их выполнение и чистят память автоматически в деструкторе.
Плюсую. ( точнее плюсанул бы если бы мог )
Аналогично юзаю деструкторы. Только у меня виджет еще может иметь дочерние виджеты.

что то вроде.
panel=new Panel({
    title:'hello world 1'
});

panel2=new Panel({
    title:'hello world 2'
});


input=new Input({
     model:exampleModel,
     field:'name'
})

panel1.add(panel2)
panel2.add(input);


У каждого виджета есть свойсво childrens в которой метод add может добавлять другие виджеты. Если panel1 будет удален, то деструктор panel1 в цикле вызовет деструктор для каждого виджета в childrens. Тобиш сначало сработает деструктор для panel1 который вызовет деструктор для panel2, а деструктор panel2 вызовет деструктор для input.

В результате удаление виджета panel1 приведет к удалению всех вложенных виджетов с очисткой памяти для каждого виджета.

Вообще я считаю что виджет в фреймворке должен создаваться двумя путями, через new widgetname(); и декларативно, поскольку в разных ситуациях виджеты удобно создавать по разному. Если вы создаете систему виджетов ктоорую можно использовать и декларативно и императивно то удобнее с начало реализовать императивное создание виджетов а декларативное создание реализовывать как надстройку над императивным. Если в случае чисто декларативных виджетов иерархия виджетов особо не нужна и достаточно вызвать деструктор для всех виджетов внутри какого либо dom элемента, то в случае двойного подхода нужно учитывать иерархию. Дополнительным бонусом при учете иерархии становится предельно удобное обращение к родителям и детям (просто по свойствам childrens и parent).
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 06.12.2013 в 21:46.
Ответить с цитированием