Tôi có phương thức ghi lại thư mỗi khi được gọi. Tôi muốn thông điệp tường trình này để cho biết liệu phương pháp được gọi trực tiếp hoặc được gọi bằng cách sử dụng super
trong một lớp con.Xác định xem phương pháp ActionScript có được gọi là sử dụng siêu
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();
}
}
Tôi hy vọng nó sẽ có thể để xác định xem loại this
đã ghi đè thi hành doWork
bằng cách so sánh this.doWork
-DoerOfWork.prototype.doWork
.
Rất tiếc, điều này là không thể. Các phương thức Unbound không thể truy cập được ở bất cứ nơi nào trong ActionScript (đặc tả này liệt kê hai loại hàm: đóng các hàm và các phương thức liên kết). Thậm chí không có bất kỳ thuộc tính nào trên các cá thể trên MethodClosure
có thể xác định xem hai bản sao có bị ràng buộc của cùng một phương thức hay không.
Làm cách nào để kiểm tra xem phương thức đã bị ghi đè hay sử dụng bất kỳ phương pháp nào khác để xác định xem phương pháp ActionScript hiện đang thực hiện được gọi là sử dụng super
hoặc được gọi trực tiếp?