Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > ActionScript 語言和語法 > 語言概觀 | |||
物件是 ActionScript 3.0 語言的核心要素,也是基本的建構單元。您所宣告的每一個變數、所撰寫的每一個函數,以及所建立的每一個類別實體都是物件;您可以將 ActionScript 3.0 程式視為一組執行工作的物件,這些物件會回應事件,並且彼此進行通訊。
熟悉 Java 或 C++ 物件導向程式設計 (OOP) 的程式設計人員可能會將物件視為模組,其中包含兩種成員:儲存在成員變數或屬性的資料,以及可透過方法存取的行為指令。ECMAScript 第 4 版草稿是 ActionScript 3.0 所依據的標準,其定義物件的方式與此類似,但稍有差異。在 ECMAScript 草稿中,物件只是屬性的集合;這些屬性是容器,不但能保存資料,也能保存函數或其它物件。若函數是以這種方式附加到物件上,則稱為方法。
雖然具有 Java 或 C++ 背景的程式設計人員可能會覺得 ECMAScript 草稿定義有些奇怪,但是在實際作業時,以 ActionScript 3.0 類別定義物件類型其實與 Java 或 C++ 中定義類別的方式非常類似。兩種物件定義的區別只有在討論 ActionScript 物件模型及其它進階主題時才會有意義,但在其它大部分情況下,所謂「屬性」一詞是指類別成員變數,與方法相對。例如,「ActionScript 3.0 語言和組件參考」會使用「屬性」代表變數或 getter-setter 屬性,並使用「方法」一詞代表屬於類別之一部分的函數。
ActionScript 中的類別與 Java 或 C++ 中的類別之間有一項微妙的差異,就是在 ActionScript 中,類別不僅只是抽象實體。ActionScript 類別是以儲存類別之屬性和方法的「類別物件」來代表,因此能夠運用 Java 和 C++ 程式設計人員可能會覺得性質很不相同的技巧,例如,在類別或套件的最高階包含陳述式或可執行的程式碼。
ActionScript 類別與 Java 或 C++ 類別之間還有另外一項差異,就是每一個 ActionScript 類別都有所謂的「原型物件」。在舊版 ActionScript 中,原型物件連結在一起形成「原型鏈」,而整體做為整個類別繼承階層的基礎;但是在 ActionScript 3.0 中,原型物件在繼承系統中只扮演份量很輕的小角色,原型物件仍然會很有用,若要在類別的所有實體間共享屬性及其值,它可以替代靜態屬性和方法。
在過去,進階 ActionScript 程式設計人員都可以利用特殊的內建語言元素,直接操控屬性鏈;而現在語言可提供更成熟的類別架構式程式設計介面,這些語言元素中有很多 (例如 __proto__ 和 __resolve,) 都已不再是語言的一部分,而且,將內部繼承機制最佳化的作法讓 Flash Player 的效能大幅提升,可防止直接存取繼承機制。
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000038.html