Показать сообщение отдельно
Старый 21.07.2010, 15:18
himmens вне форума Посмотреть профиль Отправить личное сообщение для himmens Найти все сообщения от himmens
  № 1  
Ответить с цитированием
himmens

Регистрация: Jun 2010
Адрес: Москва
Сообщений: 8
По умолчанию Определить имя функции из тела самой функции

Всем привет!
Может кто знает, возможно ли определить имя функции (объявленное в каком либо классе) из тела самой функции.

Определить ссылку на функцию легко:
Код AS3:
arguments.callee
А как получить ее имя?

Приведу пример:
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class FunctionsTest extends Sprite
	{
		public function FunctionsTest()
		{
			super();
			testFunction();
		}
 
		private function testFunction():void
		{
			//можно, конечно вывести так
			trace("testFunction")
		}
	}
}
Но хочется какой-то универсальный способ, чтобы не писать каждый раз trace с именем функции.

Пробовал через describeType:
Код AS3:
trace(describeType(arguments.callee));
Выдает что-то типа:
Код AS3:
<type name="builtin.as$0::MethodClosure" base="Function" isDynamic="false" isFinal="true" isStatic="false">
  <extendsClass type="Function"/>
  <extendsClass type="Object"/>
  <accessor name="length" access="readonly" type="int" declaredBy="builtin.as$0::MethodClosure"/>
  <accessor name="prototype" access="readwrite" type="*" declaredBy="builtin.as$0::MethodClosure"/>
</type>
Но тут нужной информации нет.

Для чего это нужно? Просто было бы удобно логировать вызовы функций.