gpt4 book ai didi

actionscript-3 - 获取对方法调用者的引用的通用方法?

转载 作者:行者123 更新时间:2023-12-04 06:37:17 25 4
gpt4 key购买 nike

我有 2 个类代表 2 个对象。从“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!"
}
}
}

最佳答案

了解您为什么需要它会有所帮助,因为我感觉您并不需要。如果该方法是匿名的,您可以通过在该方法上使用 .apply 来绑定(bind)“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"

但是,如果方法是实例方法,则它是绑定(bind)方法,因此“this”将始终指向声明它的类的实例,无论您是否使用 apply 方法重新定义它。如果它是静态方法,“this”没有意义,编译器会捕获它。

除此之外,除了将其声明为参数外,别无他法。 arguments 对象上曾经有一个 caller 属性,但是在 AS3 发布时它被弃用了。您可以通过 arguments.callee 获取对函数本身的引用,但这并不是您真正要求的。

关于actionscript-3 - 获取对方法调用者的引用的通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4501573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com