AS3 - что-то вроде arguments.caller? - PullRequest
       0

AS3 - что-то вроде arguments.caller?

1 голос
/ 07 сентября 2011

Есть ли что-то, что возвращает ссылку на объект, который вызвал функцию?

Например, у меня есть ..

public function getSquadLocation(squadID:int):Location {
//stuff
}

Это вызывается из других классов - например:

getSquadLocation(selectedSquad);

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

public function getSquadLocation(squadID:int = arguments.caller.selectedSquad){

Спасибо

1 Ответ

5 голосов
/ 07 сентября 2011

Нет, вы не можете получить доступ к «вызывающему» неявно.Вот выдержка из документации по ActionScript 3 Adobe:

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

Что бы вы ни делали, и это будет гораздо более безопасная и более стабильная и разумная альтернатива , если вы передадите объект в качестве локального аргумента методу и позволите этомуметод работы с этим.Этот подход имеет много преимуществ, как вы можете обнаружить в долгосрочной перспективе:

  • Перенос кода на другие платформы, где информация о вызывающей функции не раскрывается, менее проблематичен.

  • Передача требуемой информации о вызывающем абоненте в явном виде в качестве аргументов функции (в стеке) может традиционно повысить производительность.Это спорно, однако.

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