Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 30.06.2009, 12:45
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 19  
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
все тесты проводились во Flash CS4

2. имеют кривую типизацию.
Код AS3:
import flash.events.EventDispatcher;
function test():Function {
	return function() {
		return 0;
	}
}
var dispatcher = new EventDispatcher();
dispatcher.addEventListener( 'test', test() );	// всё окей
dispatcher.addEventListener( 'test', test );	// ArgumentError: Error #1063
dispatcher.dispatchEvent( new Event( 'test' ) );
это значит, что анонимные функции не имеют сигнатуры.


3. жрут больше памяти.
Код AS3:
import flash.sampler.getSize;
function test():Function {
	return function() {
		return 0;
	}
}
trace( getSize( test ) );	// 32
trace( getSize( test() );	// 666
разница в 20 раз


4. у них плавающий объект активации.
Код AS3:
function test():Function {
	trace( '1', this );
	return function() {
		trace( '2', this );
	}
}
 
test()();
// 1 [object MainTimeline]
// 2 [object global]
 
var f:Function = test();
f();
// 1 [object MainTimeline]
// 2 [object MainTimeline]
 
var o = {};
test.call( o );
f.call( o );
//1 [object MainTimeline]
//2 [object Object]
афигенные результаты!


5. от них проблемно отписываться.
Код AS3:
import flash.events.EventDispatcher;
function test():Function {
	return function() {
		return 0;
	}
}
var dispatcher = new EventDispatcher();
dispatcher.addEventListener( 'test', test() );
как отписаться от такого метода снаружи?



6. их нельзя сравнивать друг с другом.
Код AS3:
function test():Function {
	return function() {
		return 0;
	}
}
trace( test() === test() ) // false;
trace( test === test ); // true
соответсвенно потеря ссылки на метод приводит нас к пунктам 1 и 5


Последний раз редактировалось etc; 02.07.2009 в 13:44.
Создать новую тему   Часовой пояс GMT +4, время: 01:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.