ECMAScript 面向對象技術
- 上一頁 閉包(closure)
- 下一頁 對象應用
面向對象術語
對象
ECMA-262 把對象(object)定義為“屬性的無序集合,每個屬性存放一個原始值、對象或函數”。嚴格來說,這意味著對象是無特定順序的值的數組。
盡管 ECMAScript 如此定義對象,但它更通用的定義是基于代碼的名詞(人、地點或事物)的表示。
類
每個對象都由類定義,可以把類看做對象的配方。類不僅要定義對象的接口(interface)(開發者訪問的屬性和方法),還要定義對象的內部工作(使屬性和方法發揮作用的代碼)。編譯器和解釋程序都根據類的說明構建對象。
實例
程序使用類創建對象時,生成的對象叫作類的實例(instance)。對類生成的對象的個數的唯一限制來自于運行代碼的機器的物理內存。每個實例的行為相同,但實例處理一組獨立的數據。由類創建對象實例的過程叫做實例化(instantiation)。
在前面的章節我們提到過,ECMAScript 并沒有正式的類。相反,ECMA-262 把對象定義描述為對象的配方。這是 ECMAScript 邏輯上的一種折中方案,因為對象定義實際上是對象自身。即使類并不真正存在,我們也把對象定義叫做類,因為大多數開發者對此術語更熟悉,而且從功能上說,兩者是等價的。
面向對象語言的要求
一種面向對象語言需要向開發者提供四種基本能力:
- 封裝 - 把相關的信息(無論數據或方法)存儲在對象中的能力
- 聚集 - 把一個對象存儲在另一個對象內的能力
- 繼承 - 由另一個類(或多個類)得來類的屬性和方法的能力
- 多態 - 編寫能以多種方法運行的函數或方法的能力
ECMAScript 支持這些要求,因此可被是看做面向對象的。
對象的構成
在 ECMAScript 中,對象由特性(attribute)構成,特性可以是原始值,也可以是引用值。如果特性存放的是函數,它將被看作對象的方法(method),否則該特性被看作對象的屬性(property)。
- 上一頁 閉包(closure)
- 下一頁 對象應用