成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS對象隨筆

Lin_YT / 2404人閱讀

摘要:原型對象對象的原型對象實質(zhì)上是對象的構(gòu)造函數(shù)的原型對象。構(gòu)造函數(shù)所有的對象都是通過構(gòu)造函數(shù)實例化出來的。即一個對象,如果沿著原型鏈找下去,最終都會找到構(gòu)造函數(shù)原型對象相互之間糾纏不休,你中有我,我中有你。

JS中的對象

JS中對象(若無特殊說明,本文中的對象都為對象實例,即使是空對象實例)可謂是一個核心的概念,縱觀整個JS的數(shù)據(jù)結(jié)構(gòu)如String、NumberArray、Boolean等,都有其對應(yīng)的對象。細(xì)細(xì)數(shù)來,感覺上就是JS里一切數(shù)據(jù)皆對象(除了純數(shù)字、nullundefined外,其他數(shù)據(jù)都可以訪問到__proto__屬性)。本文將淺析一下JS中的對象及相關(guān)概念。

對象的屬性

JS中的對象本質(zhì)上就是一個若干個無序的鍵值對組成的集合。每個鍵值對就是對象的屬性或方法。而對象中的每個屬性都對應(yīng)著有屬性描述符,屬性描述符分為數(shù)據(jù)描述符和存儲描述符。屬性描述符又包含了以下幾個屬性。

數(shù)據(jù)描述符和存取描述符均具有以下可選鍵值:

configurable
當(dāng)且僅當(dāng)該屬性的 configurable 為 true 時,該屬性描述符才能夠被改變,也能夠被刪除。默認(rèn)為 false。
enumerable
當(dāng)且僅當(dāng)該屬性的 enumerable 為 true 時,該屬性才能夠出現(xiàn)在對象的枚舉屬性中。默認(rèn)為 false。
數(shù)據(jù)描述符同時具有以下可選鍵值:

value
該屬性對應(yīng)的值??梢允侨魏斡行У?JavaScript 值(數(shù)值,對象,函數(shù)等)。默認(rèn)為 undefined。
writable
當(dāng)且僅當(dāng)該屬性的 writable 為 true 時,該屬性才能被賦值運算符改變。默認(rèn)為 false。
存取描述符同時具有以下可選鍵值:

get
一個給屬性提供 getter 的方法,如果沒有 getter 則為 undefined。該方法返回值被用作屬性值。默認(rèn)為 >undefined。
set
一個給屬性提供 setter 的方法,如果沒有 setter 則為 undefined。該方法將接受唯一參數(shù),并將該參數(shù)的新值>分配給該屬性。默認(rèn)為 undefined。

對象的屬性和方法中有幾個特殊的存在:

constructor

該屬性指向?qū)ο蟮臉?gòu)造函數(shù)

__proto__(非標(biāo)準(zhǔn),不推薦使用)

該屬性指向?qū)ο蟮臉?gòu)造函數(shù)的原型對象,因為對象沒有prototype屬性,所以通過該屬性指向它。此屬性為訪問器屬性,不推薦使用。若需要獲取對象的原型對象可以用Object.getPrototypeOf(obj)來獲取。

通過對象訪問的屬性和方法除了來自對象自身定義的以外,還有從其原型鏈上繼承的屬性和方法。

原型對象

對象的原型對象實質(zhì)上是對象的構(gòu)造函數(shù)的原型對象??梢杂?b>Object.setPrototypeOf(obj,prototype)改變對象的原型對象。
訪問對象的原型對象有兩種方法,一是通過內(nèi)置屬性 __proto__訪問,二是通過Object方法Object.getPrototypeOf(obj)訪問。兩種方法都有其局限性,第一種方法不是ES標(biāo)準(zhǔn)所支持的,雖然ES6已經(jīng)支持了。因為__proto__屬性時訪問器屬性,所以可以修改對象的原型對象(這樣很影響性能)。第二種方法在IE瀏覽器中的支持情況是IE9+。總體上講,推薦第二種方法去訪問對象的原型對象。如果想要替換原型對象,則可用 Object.setPrototypeOf(obj,prototype)重新設(shè)置其原型對象。

構(gòu)造函數(shù)

所有的對象都是通過構(gòu)造函數(shù)實例化出來的。Object也不例外。
對象的構(gòu)造函數(shù)恒等于實例出該對象的構(gòu)造函數(shù)的原型對象的constructor屬性指向的函數(shù)。即

var obj = new A(); 
obj.constructor===A.prototype.constructor

一個對象,如果沿著原型鏈找下去,最終都會找到Object構(gòu)造函數(shù)、原型對象相互之間糾纏不休,你中有我,我中有你。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81191.html

相關(guān)文章

  • 前端隨筆(雜談)

    摘要:經(jīng)過對前端技術(shù)的學(xué)習(xí),感觸良多,雖然之前也接觸過前端的知識,但是沒有進(jìn)行系統(tǒng)的學(xué)習(xí)過,在大三上學(xué)期學(xué)過和簡單的,老師也沒有深度講解,知識也沒有形成體系,經(jīng)過一段時間的學(xué)習(xí),有以下感觸與大家分享整個前端知識就像一座房子,而是磚,建一個網(wǎng)頁,里經(jīng)過對前端技術(shù)的學(xué)習(xí),感觸良多,雖然之前也接觸過前端的知識,但是沒有進(jìn)行系統(tǒng)的學(xué)習(xí)過,在大三上學(xué)期學(xué)過h5和簡單的css,老師也沒有深度講解,知識也沒有形...

    caohaoyu 評論0 收藏0
  • 繼承的實現(xiàn)方式及原型概述 | JavaScript 隨筆

    摘要:每一個對象直接量都是的子類,即構(gòu)造函數(shù)中的構(gòu)造函數(shù)與普通函數(shù)并沒有什么兩樣,只不過在調(diào)用時,前面加上了關(guān)鍵字,就當(dāng)成是構(gòu)造函數(shù)了。由于沒有傳入變量,在調(diào)用的構(gòu)造函數(shù)時,會出錯這個問題可以通過一個空對象來解決改自。 showImg(https://segmentfault.com/img/bVmNZj); 對于 OO 語言,有一句話叫Everything is object,雖然 Ja...

    chenjiang3 評論0 收藏0
  • [JavaScript 隨筆] 垃圾回收

    摘要:在中,由于垃圾回收是自動進(jìn)行的,所以人們在編碼時可能不太會注意這方面。時,引擎統(tǒng)一對所有這些狀態(tài)的對象進(jìn)行回收。,表示釋放該對象后能得到的內(nèi)存大小。 在 JavaScript 中,由于垃圾回收是自動進(jìn)行的,所以人們在編碼時可能不太會注意這方面。但事實是,一些 webapp 在使用一段時間后,會出現(xiàn)卡頓的現(xiàn)象,特別是那些單頁應(yīng)用,包括 WebView 方式的手機(jī) app 。這個現(xiàn)象在傳統(tǒng)...

    ConardLi 評論0 收藏0
  • [JavaScript 隨筆] 關(guān)于 this 你必須知道這幾點

    摘要:關(guān)于中的坑大家都踩過。那這里的和是嚴(yán)格相等的。這里介紹的是通過創(chuàng)建對象時的。提示一下,數(shù)組對象的函數(shù)本身就是有這個功能的,也就是說可以達(dá)到要求。事件有兩種記法,一個是也是類似,那么在中出現(xiàn)的表示觸發(fā)該事件的元素,也就是。 TL;DR: this 指向調(diào)用該方法的對象,只有函數(shù)執(zhí)行時,this 才有定義。 關(guān)于 JavaScript 中 this 的坑大家都踩過。像本文開頭的這句話,道理...

    鄒強(qiáng) 評論0 收藏0

發(fā)表評論

0條評論

Lin_YT

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<