Actionscript 3 获取方法引用的通用方法';打电话的人是谁?
我有两个代表两个对象的类。从“whoCalledMe”函数中,我想找出哪个对象调用了该函数(而不是将该信息作为参数传入)。我使用了一个虚构的属性“caller”,它将为我提供我正在寻找的参考资料。有没有一种通用的方法可以让我从那里获得对调用方的引用Actionscript 3 获取方法引用的通用方法';打电话的人是谁?,actionscript-3,Actionscript 3,我有两个代表两个对象的类。从“whoCalledMe”函数中,我想找出哪个对象调用了该函数(而不是将该信息作为参数传入)。我使用了一个虚构的属性“caller”,它将为我提供我正在寻找的参考资料。有没有一种通用的方法可以让我从那里获得对调用方的引用 package { public class ObjectCallingTheFunction { public var IDENTITY:String = "I'm the calling function!";
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所要求的。哇,这个问题很可怕……我在做什么?不这样做的原因@“循环/循环依赖”或“有向无环图”。