Цитата:
Сообщение от switcher!
Так что второе условие, скорей всего - не подходит.
|
Да, мне понятна Ваша мысль. Я там приписал мелким шрифтом, что "клонирование скорее всего необходимо" при таких-то условиях )
Я пытаюсь рассуждать как должно быть, а не как это реализовано в FP. Если мы поймем зачем нужно клонирование событий, то его можно реализовать оптимальным способом. Клонирование само по себе необходимо для предотвращения изменений объекта по ссылке. Сравните: передали методу массив и он модифицировал его. А в вызывающем методе Вы предполагали, что он не изменится. Выход - либо передаем клон, либо в вызванном методе создаем клон.
С другой стороны, конкретно в области event flow при выполнении диспетчеризации у событийного объекта должен быть установлен target того, кто его испустил. Здесь получается, что если бы не было клона, то неожиданно у всех предыдущих объектов-приемников поменялся бы event.target по ссылке. Но я диспатчу событие от того же передатчика. Здесь мне не нужен клон.
Если я диспатчу событие, то мне будет важнее производительность. О создании клонов я могу позаботиться сам, зато избегу ненужных расходов.
Кстати, иногда в проектах встречаю подобное

Код AS3:
function handler(event:Event):void {
// что-то тут делают
dispatchEvent( event.clone() )
}
Вот получается, что напрасно клонируют, оно само склонируется при ре-диспатче.
Цитата:
|
По остальному: так ведь у вас целевой эвент не баблится непосредственно. Для этого у него есть эвент-обертка. Но вы все равно клонируете целевой эвент на всех уровнях (при наличии слушателей), который вообще не диспатчится. Он тащится наверх эстафетой из оберток. Смысл его клонировать?
|
Реверс инженеринг или Вы начали работать у нас? )
BloodHound'а спросите, его детище. Я вообще использую в модели дисплей-объекты.