2011-09-07 213 views
1

是否有返回对调用函数的对象的引用的东西?AS3 - 类似arguments.caller的东西?

例如,我有..

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

这会从其他类调用 - 例如:

getSquadLocation(selectedSquad); 

其中selectedSquad是调用该函数的类的变量。我已经被重复了很多次,这将是可以指定默认值,就像这样......

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

感谢

回答

5

不,你不能访问“主叫方”“含蓄” 。以下是Adobe的ActionScript 3文档摘录:

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

你做什么,以及这将是一个更安全,更稳定,更理智的替代,是你传递对象为本地参数的方法,并让此方法的工作。有许多优点,以这种方法,因为你可以从长远来看发现:

  • 代码移植到函数调用方信息不公开的其他平台,是不太麻烦。

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

  • 将调用者信息显式地传递给函数会更好地读取调用者对实现的依赖关系,从而有助于读取和理解代码。