国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS對象隨筆

Lin_YT / 2396人閱讀

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

JS中的對象

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

對象的屬性

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

數據描述符和存取描述符均具有以下可選鍵值:

configurable
當且僅當該屬性的 configurable 為 true 時,該屬性描述符才能夠被改變,也能夠被刪除。默認為 false。
enumerable
當且僅當該屬性的 enumerable 為 true 時,該屬性才能夠出現在對象的枚舉屬性中。默認為 false。
數據描述符同時具有以下可選鍵值:

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

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

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

constructor

該屬性指向對象的構造函數

__proto__(非標準,不推薦使用)

該屬性指向對象的構造函數的原型對象,因為對象沒有prototype屬性,所以通過該屬性指向它。此屬性為訪問器屬性,不推薦使用。若需要獲取對象的原型對象可以用Object.getPrototypeOf(obj)來獲取。

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

原型對象

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

構造函數

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81191.html

相關文章

  • 前端隨筆(雜談)

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

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

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

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

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

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

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

    鄒強 評論0 收藏0

發表評論

0條評論

Lin_YT

|高級講師

TA的文章

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