抱歉,答案是否定的(请参阅下面的编辑)。函数接收到一个特殊的属性arguments
,在 AS2 中它曾经拥有caller
可以大致完成您想要的操作的属性。虽然 arguments 对象在 AS3 中仍然可用,但 caller 属性已从 AS3(因此 Flex 3)中删除,因此没有直接的方法可以做你想做的事。还建议您使用 [...rest 参数]( http://livedocs.adobe.com/flex/3/langref/statements.html#..._(rest)_parameter)语言功能而不是参数.
这是关于此事的参考(搜索被调用者以找到相关详细信息)。
编辑:进一步的调查表明,可以获得当前执行函数的堆栈跟踪,所以如果你幸运的话,你可以用它做一些事情。有关更多详细信息,请参阅此博客条目和此论坛帖子。
博客文章的基本思想是你抛出一个错误,然后立即捕获它,然后解析堆栈跟踪。丑陋,但它可能对你有用。
博客文章中的代码:
var stackTrace:String;
try { throw new Error(); }
catch (e:Error) { stackTrace = e.getStackTrace(); }
var lines:Array = stackTrace.split("\n");
var isDebug:Boolean = (lines[1] as String).indexOf('[') != -1;
var path:String;
var line:int = -1;
if(isDebug)
{
var regex:RegExp = /at\x20(.+?)\[(.+?)\]/i;
var matches:Array = regex.exec(lines[2]);
path = matches[1];
//file:line = matches[2]
//windows == 2 because of drive:\
line = matches[2].split(':')[2];
}
else
{
path = (lines[2] as String).substring(4);
}
trace(path + (line != -1 ? '[' + line.toString() + ']' : ''));