我用Python问了this同样的问题。
现在我想知道这是否可以在AS3中完成。
如果我有这样的话:
package
{
public class SomeClass
{
private function A():void { C() }
private function B():void { C() }
private function C():void
{
// who is the caller, A or B ???
}
public function SomeClass()
{
A()
B()
}
}
}
尽管存在设计或其他问题,但这只是一个探究性思维的问题。
注意:我喜欢访问调用函数的实例,因此我可以调用该调用函数(如果我愿意)
function C()
签名答案 0 :(得分:5)
“与以前版本的ActionScript不同,ActionScript 3.0没有arguments.caller属性。要获取对调用当前函数的函数的引用,必须将对该函数的引用作为参数传递。”
来自http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/arguments.html
这是你能做到的唯一方法,否则你需要创建一个全局变量来告诉函数调用C
答案 1 :(得分:1)
当然可以做到。你可以做点什么
private function C():void
{
var e:Error = new Error();
var stack:String = e.getStackTrace();
//analyze stack and find out which function called it.
}
这很难看,但它会起作用。