99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

對象

2018-06-16 12:58 更新

ECMAScript 不使用諸如 C++,Smalltalk,Java 中的類。相反,對象可以通過各種方式創(chuàng)建,包括字面符號,或通過 構(gòu)造器 創(chuàng)建對象然后運(yùn)行代碼初始化其全部或部分屬性值,為這些屬性分配初始值。每個(gè)構(gòu)造器是一個(gè)擁有名為“prototype”的屬性的函數(shù)。此屬性用于實(shí)現(xiàn) 基于原型的繼承 和 共享屬性 。構(gòu)造器通過 new 表達(dá)式創(chuàng)建對象:例如,new Date(2009,11) 創(chuàng)建一個(gè)新 Date 對象。不使用 new 調(diào)用一個(gè)構(gòu)造器的結(jié)果,依賴構(gòu)造器本身。例如,Date() 產(chǎn)生一個(gè)表示當(dāng)前日期時(shí)間的字符串,而不是一個(gè)對象。


每個(gè)由構(gòu)造器創(chuàng)建的對象,都有一個(gè)隱式引用 ( 叫做對象的原型 ) 鏈接到構(gòu)造器的“prototype”屬性值。再者,原型可能有一個(gè)非空 (non-null) 隱式引用鏈接到它自己的原型,以此類推,這叫做 原型鏈 。當(dāng)向?qū)ο蟮囊粋€(gè)屬性提出引用,引用會(huì)指向原型鏈中包含此屬性名的第一個(gè)對象的此屬性。換句話說,首先檢查直接提及的對象的同名屬性,如果對象包含同名的屬性,引用即指向此屬性,如果該對象不包含同名的屬性,則下一步檢查對象的原型;以此類推。

對象/原型關(guān)系


一般情況下基于類的面向?qū)ο笳Z言的實(shí)例擁有狀態(tài),類擁有方法,并且只能繼承結(jié)構(gòu)和行為。在 ECMAScript 中,對象擁有狀態(tài)和方法,并且結(jié)構(gòu),行為,狀態(tài)全都可繼承。


不直接包含原型中包含的特定屬性的所有對象會(huì)共享此屬性及屬性值。圖 1 說明了這一點(diǎn):


CF 是一個(gè)構(gòu)造器(也是一個(gè)對象)。五個(gè)對象已用 new 表達(dá)式創(chuàng)建 : cf1, cf2, cf3, cf4, cf5。每個(gè)對象都有名為 q1 和 q2 的屬性。虛線表示隱式原型關(guān)系;例如:cf3 的原型是 CFp。構(gòu)造器 CF 自己有名為 P1 和 P2 的兩個(gè)屬性 , 這對 CFp, cf1, cf2, cf3, cf4, cf5 是不可見的。CFp 的名為 CFP1 的屬性共享給 cf1, cf2, cf3, cf4, cf5 ( 沒有 CF), 以及在 CFp 的隱式原型鏈中找不到任何名為 q1, q2, 或 CFP1 的屬性。 請注意 ,CF 和 CFp 之間沒有隱式原型鏈接。


不同于基于類的對象語言,屬性可以通過賦值的方式動(dòng)態(tài)添加給對象。也就是說,構(gòu)造器并不是非要對構(gòu)造的對象的全部或任何屬性命名或賦值。上圖中,可以給 CFp 添加新屬性值的方式為 cf1, cf2, cf3, cf4,cf5 添加一個(gè)新的共享屬性。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號