Показать сообщение отдельно
Старый 13.08.2008, 20:36
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Создавать функции внутри функций - плохо, на то есть много причин.
Есть для этих целей класс mx.utils.Delegate он специально предназначен для делегирования (передачи) объекта в области видимости которого будет выполнена функция этой функции.
Кроме того, переделывать ХМЛ в другую структуру, будь то массив или объект - в 99% случаев абсурдное занятие, которое только занимает время и ресурсы. В общем случае, либо используйте так, как есть, либо если очень сложная структура - есть XPath, есть и в mx пакете, и есть альтернативный вариант.
Ну и вот это - ну, как бы вообще не серьезно:
Код:
menu_db.push({	ur:shortcut.childNodes[j].attributes.ur, 
			caption:shortcut.attributes.name, 
			link:shortcut.attributes.link, 
			subnav_db:submenu_db});
Почему нельзя было так?
Код:
menu_db.push(shortcut.childNodes[j].attributes);
Кроме всего прочего, перебирать в цикле ХМЛ таким вот образом:
Код:
while(xml.childNodes[i].childNodes[i].childNodes[i].childNodes[i]...)
Во-первых нечитаемо, а во вторых создает лишнюю нагрузку, т.е. логично в таком случае поступить так:
Код:
var xn:XMLNode = xml.childNodes[i].childNodes[i].childNodes[i].childNodes[i];
while(xn.childNodes[i]...)
__________________
Hell is the possibility of sanity