AS3 - 类似arguments.caller?

时间:2011-09-07 08:23:38

标签: flash actionscript-3

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

例如,我有..

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

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

getSquadLocation(selectedSquad);

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

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

由于

1 个答案:

答案 0 :(得分:5)

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

  

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

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

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

  • 显式传递所需的调用者信息作为函数参数(在堆栈上)传统上可以产生更多的性能。然而,这是有争议的。

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