我有一个方法,每次调用时都会记录一条消息。我希望此日志消息表明该方法是直接调用还是super
在子类中调用。
class DoerOfWork {
public function doWork():void {
var calledWithSuper:Boolean;
calledWithSuper = ???;
trace("doWork called" + (calledWithSuper ? " (with super)." : "."));
}
}
class SlowerDoerOfWork extends DoerOfWork {
public override function doWork():void {
for (var i:Number = 0; i < 321684; i++) {
// wait a moment
}
super.doWork();
}
}
我希望可以通过比较来确定 的类是否this
覆盖了 的实现。doWork
this.doWork
DoerOfWork.prototype.doWork
不幸的是,这是不可能的。在 ActionScript 中的任何地方都无法访问未绑定的方法(规范列出了两种类型的函数:函数闭包和绑定方法)。实例上甚至没有任何属性MethodClosure
可以识别两个是否是同一方法的绑定副本。
如何检查方法是否已被覆盖或使用任何其他方法来确定当前执行的 ActionScript 方法是使用super
调用还是直接调用?