Показать сообщение отдельно
Старый 11.06.2010, 01:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от switcher! Посмотреть сообщение
Так что второе условие, скорей всего - не подходит.
Да, мне понятна Ваша мысль. Я там приписал мелким шрифтом, что "клонирование скорее всего необходимо" при таких-то условиях )

Я пытаюсь рассуждать как должно быть, а не как это реализовано в FP. Если мы поймем зачем нужно клонирование событий, то его можно реализовать оптимальным способом. Клонирование само по себе необходимо для предотвращения изменений объекта по ссылке. Сравните: передали методу массив и он модифицировал его. А в вызывающем методе Вы предполагали, что он не изменится. Выход - либо передаем клон, либо в вызванном методе создаем клон.

С другой стороны, конкретно в области event flow при выполнении диспетчеризации у событийного объекта должен быть установлен target того, кто его испустил. Здесь получается, что если бы не было клона, то неожиданно у всех предыдущих объектов-приемников поменялся бы event.target по ссылке. Но я диспатчу событие от того же передатчика. Здесь мне не нужен клон.

Если я диспатчу событие, то мне будет важнее производительность. О создании клонов я могу позаботиться сам, зато избегу ненужных расходов.

Кстати, иногда в проектах встречаю подобное
Код AS3:
function handler(event:Event):void {
    // что-то тут делают
    dispatchEvent( event.clone() )
}
Вот получается, что напрасно клонируют, оно само склонируется при ре-диспатче.


Цитата:
По остальному: так ведь у вас целевой эвент не баблится непосредственно. Для этого у него есть эвент-обертка. Но вы все равно клонируете целевой эвент на всех уровнях (при наличии слушателей), который вообще не диспатчится. Он тащится наверх эстафетой из оберток. Смысл его клонировать?
Реверс инженеринг или Вы начали работать у нас? )
BloodHound'а спросите, его детище. Я вообще использую в модели дисплей-объекты.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.