ActionScript - Получение имени вызывающей функции или конструктора? - PullRequest
0 голосов
/ 07 ноября 2010

long shot: возможно ли получить имя вызывающей функции или конструктора из вызываемой функции?Можно ли определить предыдущую функцию потока?

Я хотел бы вызвать некоторые функции-установщики из моего конструктора, и чтобы мои функции-установщики определяли, был ли это конструктор, который их вызвал.

в настоящее время я устанавливаю логическое значение для этой функции, но, возможно, есть другой способ?

public function Constructor(myNumber:Number)
     {
     this.myNumber = myNumber;
     }

public function set myNumber(value:Number):void
     {
     myNumberProperty = value;

     //if constructor called this, return;
     //else do some other stuff;
     }

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Цитата из liveDocs:

В отличие от предыдущих версий ActionScript, ActionScript 3.0 не имеет свойства arguments.caller. Чтобы получить ссылку на функцию, которая вызвала текущую функцию, вы должны передать ссылку на эту функцию в качестве аргумента. Пример этой техники можно найти в примере для arguments.callee.

Это было в AS2.0 ... К сожалению, в AS3.0 выдается ошибка.

0 голосов
/ 07 ноября 2010

Технически, вы должны быть в состоянии сделать это, генерируя ошибку и получая трассировку стека. Конструктор должен быть на трассировке стека.

try
{
    throw new Error();
}
catch (e:Error)
{
    // parse this for the constructor name
    trace(e.getStackTrace());
}

Это было бы для определения, откуда пришел вызов функции ...

Я бы еще пойти на ваше решение (установка флага), так как это более ЛСГ и, вероятно, гораздо быстрее, с точки зрения производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...