ECMAScript 面向?qū)ο蠹夹g(shù)

2018-09-21 15:36 更新

面向?qū)ο笮g(shù)語

對象

ECMA-262 把對象(object)定義為“屬性的無序集合,每個屬性存放一個原始值、對象或函數(shù)”。嚴(yán)格來說,這意味著對象是無特定順序的值的數(shù)組。

盡管 ECMAScript 如此定義對象,但它更通用的定義是基于代碼的名詞(人、地點或事物)的表示。

每個對象都由類定義,可以把類看做對象的配方。類不僅要定義對象的接口(interface)(開發(fā)者訪問的屬性和方法),還要定義對象的內(nèi)部工作(使屬性和方法發(fā)揮作用的代碼)。編譯器和解釋程序都根據(jù)類的說明構(gòu)建對象。

實例

程序使用類創(chuàng)建對象時,生成的對象叫作類的實例(instance)。對類生成的對象的個數(shù)的唯一限制來自于運行代碼的機器的物理內(nèi)存。每個實例的行為相同,但實例處理一組獨立的數(shù)據(jù)。由類創(chuàng)建對象實例的過程叫做實例化(instantiation)。

在前面的章節(jié)我們提到過,ECMAScript 并沒有正式的類。相反,ECMA-262 把對象定義描述為對象的配方。這是 ECMAScript 邏輯上的一種折中方案,因為對象定義實際上是對象自身。即使類并不真正存在,我們也把對象定義叫做類,因為大多數(shù)開發(fā)者對此術(shù)語更熟悉,而且從功能上說,兩者是等價的。

面向?qū)ο笳Z言的要求

一種面向?qū)ο笳Z言需要向開發(fā)者提供四種基本能力:

  1. 封裝 - 把相關(guān)的信息(無論數(shù)據(jù)或方法)存儲在對象中的能力
  2. 聚集 - 把一個對象存儲在另一個對象內(nèi)的能力
  3. 繼承 - 由另一個類(或多個類)得來類的屬性和方法的能力
  4. 多態(tài) - 編寫能以多種方法運行的函數(shù)或方法的能力

ECMAScript 支持這些要求,因此可被是看做面向?qū)ο蟮摹?/p>

對象的構(gòu)成

在 ECMAScript 中,對象由特性(attribute)構(gòu)成,特性可以是原始值,也可以是引用值。如果特性存放的是函數(shù),它將被看作對象的方法(method),否則該特性被看作對象的屬性(property)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號