簡體   English   中英

是否可以從函數內部獲取類或類名?

[英]Is it possible to get the class or class name from inside a function?

我正在嘗試編寫調試工具,並且希望能夠獲得調用方的類名。 基本上是來電顯示。

因此,如果我有類似的方法,我想獲取類名稱:

public function myExternalToTheClassFunction():void {
   var objectFunction:String = argument.caller; // is functionInsideOfMyClass
   var objectFunctionClass:Object = argument.caller.this;
   trace(object); // [Class MyClass]
}

public class MyClass {

   public function functionInsideOfMyClass {
       myExternalToTheClassFunction();
   }
}

JavaScript或ActionScript3中是否有類似的東西? FYI AS3基於JS,並且在大多數情況下可以與JS互換。

出於調試目的,您可以創建一個錯誤,然后檢查堆棧跟蹤:

var e:Error = new Error();
trace(e.getStackTrace());

給你:

 Error
     at com.xyz::OrderEntry/retrieveData()[/src/com/xyz/OrderEntry.as:995]
     at com.xyz::OrderEntry/init()[/src/com/xyz/OrderEntry.as:200]
     at com.xyz::OrderEntry()[/src/com/xyz/OrderEntry.as:148]

您可以從此處解析“調用方”方法。

請注意,在某些非調試情況下, getStackTrace()可能返回null

來自文檔

與以前的ActionScript版本不同,ActionScript 3.0沒有arguments.caller屬性。 要獲得對調用當前函數的函數的引用,必須將對該函數的引用作為參數傳遞。 可以在arguments.callee的示例中找到此技術的示例。

ActionScript 3.0包括一個新的...(rest)關鍵字,而不是arguments類,建議使用。

嘗試將Class名稱作為參數傳遞:

班級代碼:

package{

    import flash.utils.getQualifiedClassName;

    public class MyClass {

        public function functionInsideOfMyClass {

            myExternalToTheClassFunction( getQualifiedClassName(this) );

        }

    }

}

外部代碼:

public function myExternalToTheClassFunction(classname:String):void {

    trace(classname); // MyClass

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM