2011-09-13 17 views
4

對類或函數對象的原型對象的引用。原型屬性 自動創建並附加到您創建的任何類 或函數對象。此屬性是靜態的,因爲它 特定於您創建的類或函數。例如,如果您創建一個類 ,那麼原型屬性的值將由該類的所有實例共享,並且只能作爲類屬性訪問。 你的類的實例不能直接訪問原型屬性。AS3原型 - 它們只是靜態變量嗎?

類的原型對象是該類的一個特殊實例, 提供了一種用於在類的所有實例之間共享狀態的機制。在運行時,如果在類實例上找不到屬性,則會檢查作爲類原型對象的委託是否具有該屬性 。如果原型對象不包含該屬性,則 進程將繼續,原型對象的代理將在層次結構中連續檢查更高級別,直到Flash Player或Adobe Integrated Runtime找到該屬性爲止。

注意:在ActionScript 3.0中,原型繼承不是用於繼承的主要的 機制。類繼承(驅動類定義中固定屬性的繼承)是ActionScript 3.0中的主要繼承機制。

因此,從這裏我得到的印象是原型只是靜態變量..我是對嗎?

回答

7

不完全是,實現爲原型的函數仍然作爲實例方法執行。在靜態函數中,您無權訪問this

此外,它並不意味着設置一個原型值的東西是設置每個實例的值。如果該類的對象沒有明確設置它,它只是回退值。

var o1:Object= {}; 
var o2:Object= {}; 
Object.prototype.foo = "foo"; 

o1.foo = "bar" 

trace(o1.foo) // bar 
trace(o2.foo) // foo