2009-03-03 167 views
1

在ActionScript 3,爲什麼getDefinitionByName()返回一個對象時,文檔說:爲什麼從getDefinitionByName()返回對象?

返回到由名稱參數指定的類的類對象的引用。

基於此,我會斷定返回的對象應該是Class而不是Object。有人能夠啓發我爲什麼不是這樣嗎?

回答

7

getDefinitionByName也可以返回一個Function,比如getDefinitionByName('flash.utils.getDefinitionByName')。 這隻適用於名稱空間級別的函數,但不適用於靜態類方法。

+0

這是正確的答案,有人應該更新這個問題。 – 2012-10-27 01:33:20

6

儘管有方法簽名,但getDefinitionByName確實會返回Class。我認爲誤導簽名是由於Class對象之前存在的方法(當它用於返回一個匿名/擴展對象實例時)導致的。

2

也許Adobe認爲此函數可能會在未來版本的Flash Player中返回不同的值。例如,ActionScript所基於的標準ECMAScript在歷史上一直使用具有原型的Function對象作爲類對象的基礎。在討論ECMAScript標準的最新版本時,已經有人在運行時「凍結」基於函數的類,以使它們變成諸如編譯時間對象之類的東西。如果你也可以爲它們指定一個定義名稱呢?他們實際上是Class在這一點上,還是他們仍然或類型Function?在我看來可能是後者。 「類」和「函數」引用都可以概括爲Object,所以返回類型在這種情況下是有意義的。

注意:這個解釋純粹是基於我在ECMAScript specification wiki和各委員會成員的博客中讀到的內容。

相關問題