воскресенье, 4 декабря 2011 г.

Tricks / Объект arguments в функциях


А знаете-ли вы о существовании локальной переменной arguments в каждой функции as3? Мне довелось узнать о ней совершенно случайно.

Далее поделюсь с вами опытом этой радостной встречи.



Волею судеб довелось совершать отладку кода, в котором присутствовало замыкание:
public function getArguments(request : IRequest) : Object
{ 
 var arguments : Object = {};
 request.forEach(
  function(key : String, value : Object) : void
  {
   arguments[key] = value;
  }
 );
 return arguments;
}

и какой бы request не приходил в ф-ию в любом случай на выходе был пустой объект. Решилось все заменой arguments на args.

Как выяснилось во Flash есть такая неявная локальная переменная arguments для любой функции, которая содержит массив переданных аргументов функции: (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/arguments.html).

Какую пользу это может нам принести, на вскидку, - удобство логирования вызова функции:
log("call func1 (" +arguments.callee + ")"); 

Комментариев нет:

Отправить комментарий

Press Any Key...