2011-09-07 380 views
1

是否有返回對調用函數的對象的引用的東西?AS3 - 類似arguments.caller的東西?

例如,我有..

public function getSquadLocation(squadID:int):Location { 
//stuff 
} 

這會從其他類調用 - 例如:

getSquadLocation(selectedSquad); 

其中selectedSquad是調用該函數的類的變量。我已經被重複了很多次,這將是可以指定默認值,就像這樣......

public function getSquadLocation(squadID:int = arguments.caller.selectedSquad){ 

感謝

回答

5

不,你不能訪問「主叫方」「含蓄」 。以下是Adobe的ActionScript 3文檔摘錄:

與以前版本的ActionScript不同,ActionScript 3.0沒有arguments.caller屬性。要獲得對調用當前函數的函數的引用,您必須將對該函數的引用作爲參數傳遞。

你做什麼,以及這將是一個更安全,更穩定,更理智的替代,是你傳遞對象爲本地參數的方法,並讓此方法的工作。有許多優點,以這種方法,因爲你可以從長遠來看發現:

  • 代碼移植到函數調用方信息不公開的其他平臺,是不太麻煩。

  • 傳遞所需的調用者信息作爲函數參數(在堆棧上)傳統上可以產生更多的性能。然而,這是有爭議的。

  • 將調用者信息顯式地傳遞給函數會更好地讀取調用者對實現的依賴關係,從而有助於讀取和理解代碼。