Actionscript 3 获取方法引用的通用方法';打电话的人是谁?

Actionscript 3 获取方法引用的通用方法';打电话的人是谁?,actionscript-3,Actionscript 3,我有两个代表两个对象的类。从“whoCalledMe”函数中,我想找出哪个对象调用了该函数(而不是将该信息作为参数传入)。我使用了一个虚构的属性“caller”,它将为我提供我正在寻找的参考资料。有没有一种通用的方法可以让我从那里获得对调用方的引用 package { public class ObjectCallingTheFunction { public var IDENTITY:String = "I'm the calling function!";

我有两个代表两个对象的类。从“whoCalledMe”函数中,我想找出哪个对象调用了该函数(而不是将该信息作为参数传入)。我使用了一个虚构的属性“caller”,它将为我提供我正在寻找的参考资料。有没有一种通用的方法可以让我从那里获得对调用方的引用

package {
    public class ObjectCallingTheFunction {
        public var IDENTITY:String = "I'm the calling function!";

        public function ObjectCallingTheFunction() {
            var objectWithFunction:ObjectWithFunction = new ObjectWithFunction();
            objectWithFunction.whoCalledMe();
        }
    }
}

package {
    public class ObjectWithFunction {
        public function whoCalledMe ():void {
            trace(caller.IDENTITY); // Outputs: "I'm the calling function!"
        }
    }
}

我想你是想知道调用者是谁。如果是这样,我建议在方法/函数中设置断点,而不是跟踪。当代码中断时,您可以回溯调用方以及更多。在FlashIDE和Flashbuilder中工作。谷歌“as3断点”,如果你是新的断点

在AS3中,您可以抛出一个错误,然后解析堆栈跟踪以找出详细信息

您可以在此处查看示例:

如果要查找被调用函数的名称,可以按照以下示例进行操作:


这是Adobe关于使用arguments.callee的官方文章

它包括示例代码


希望这有帮助。

知道你为什么需要这个会有帮助,因为我觉得你真的不需要。如果该方法是匿名的,则可以使用绑定“this”关键字。对该方法应用:

var foo:Function = function(arg:int):void
{
    trace(this);
};

var bar:Object = {
    toString: function():String { return "bar"; }
};

var baz:Object = {
    toString: function():String { return "baz"; }
};

foo.apply(bar); // <-- Prints "bar"
foo.apply(baz); // <-- Prints "baz"
var foo:Function=Function(arg:int):void
{
跟踪(这个);
};
变量栏:对象={
toString:function():字符串{return“bar”;}
};
var baz:对象={
toString:function():字符串{返回“baz”;}
};

foo.apply(bar);//我想知道是出于运行时的目的,而不是调试的目的。这不会告诉我函数是从哪里执行的。不幸的是,我认为这不适用于发布运行时。此外,你也不会得到来电者的实例,尽管我不清楚这是否是OP所要求的。哇,这个问题很可怕……我在做什么?不这样做的原因@“循环/循环依赖”或“有向无环图”。