Actionscript 3 AS3-我可以访问调用我的对象(或函数)吗?
我对Python提出了同样的问题 现在我想知道这是否可以在AS3中完成 如果我有这样的东西:Actionscript 3 AS3-我可以访问调用我的对象(或函数)吗?,actionscript-3,function,callback,Actionscript 3,Function,Callback,我对Python提出了同样的问题 现在我想知道这是否可以在AS3中完成 如果我有这样的东西: package { public class SomeClass { private function A():void { C() } private function B():void { C() } private function C():void { // who is the calle
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()
}
}
}
尽管设计或其他问题,这只是一个好奇的头脑的问题
注意:我希望能够访问调用者函数的实例,以便调用该调用者函数(如果我愿意)
注意2:这必须在不更改函数C()
签名的情况下完成“与ActionScript的早期版本不同,ActionScript 3.0没有arguments.caller属性。要获取调用当前函数的函数的引用,必须将对该函数的引用作为参数传递。”
从
这是唯一可以做到这一点的方法,否则需要创建一个全局变量来告诉调用C的函数,确保它可以完成。你可以这样做
private function C():void
{
var e:Error = new Error();
var stack:String = e.getStackTrace();
//analyze stack and find out which function called it.
}
这很难看,但它会起作用。是的,我知道这一点,但请阅读注释:“我喜欢调用函数的实例”,使用堆栈,我只知道函数的名称。而不是对象或函数对象。一旦你有了这个名称,你就可以得到它。看这里:仍然是一样的,这样我可以访问方法名,但是如果该函数是公共的并且被其他对象调用呢?我如何通过调用我的对象调用函数?为此,我需要函数实例或对象(函数的所有者)实例和函数名。