AS3 - 类似arguments.caller?

aps*_*nce 1 flash actionscript-3

是否有东西返回对调用函数的对象的引用?

例如,我有......

public function getSquadLocation(squadID:int):Location {
//stuff
}
Run Code Online (Sandbox Code Playgroud)

这可以从其他类调用 - 例如:

getSquadLocation(selectedSquad);
Run Code Online (Sandbox Code Playgroud)

其中selectedSquad是调用该函数的类的变量.我要重复这么多次,是否可以将默认值指定为......

public function getSquadLocation(squadID:int = arguments.caller.selectedSquad){
Run Code Online (Sandbox Code Playgroud)

谢谢

amn*_*amn 5

不,你无法隐含地访问"来电者".以下是Adobe的ActionScript 3文档的摘录:

与以前版本的ActionScript不同,ActionScript 3.0没有arguments.caller属性.要获取对调用当前函数的函数的引用,必须将对该函数的引用作为参数传递.

你做了什么,它将是一个更安全,更稳定和更健全的替代方案,是你将对象作为本地参数传递给方法,让这个方法使用它.从长远来看,您可能会发现这种方法有很多优点:

  • 将代码移植到其中未公开函数调用者信息的其他平台,不那么麻烦.

  • 将所需的调用者信息显式地作为函数参数(在堆栈上)传递可能传统上产生更多性能.然而,这是值得商榷的.

  • 将调用者信息显式地传递给函数读取得更好,因为实现对调用者的依赖性是明确的,有助于可读性和对代码的理解.