js高程筆記6章

來源:互聯網
上載者:User

標籤:

第6章

1.ES有兩種屬性:資料屬性和訪問器屬性。屬性中包含各種特性,表示屬性的各種特徵。

資料屬性:[[Configurable]],[[Enumerable]],[[Writable]],[[Value]]

  修改屬性使用方法:Object.defineProperty()

訪問器屬性:[[Configurable]],[[Enumerable]],[[Get]],[[Set]]

  訪問器屬性不包含數值。只能通過Object.defineProperty()定義。通過設定set和get函數,分別設定讀取和寫入的時候的行為。P141

2.屬性的特性的其他方法:

Object.defineProperties()設定多個屬性和其特性

Object.getOwnPropertyDescriptor()讀取屬性的特性

3.建立對象的模式:

4.原廠模式:解決了重複代碼問題,但無法識別物件類型

5.建構函式模式:能夠識別物件類型,但每個方法都要在執行個體上重新建立一遍。不同執行個體上的同名函數不等。

  一個函數通過new來調用就是建構函式,直接調用就是普通函數。

6.原型模式:不必在建構函式中定義對象執行個體的資訊,而是將這些資訊直接添加到原型對象中,讓所有對象執行個體共用它包含的屬性和方法。

  原型對象:(1)建立新函數時,同時建立函數的prototype屬性,指向該函數的原型對象。

       (2)原型對象產生一個constructor屬性,指向原型所在函數。

       (3)調用建構函式建立新執行個體,執行個體內部包含一個指標[[prototype]],指向原型對象

  原型對象的方法:Object.prototype.isPrototypeOf(執行個體),Object.getPrototypeOf(執行個體),執行個體.hasOwnProperty(屬性),Objet.key(執行個體or原型),Object.getOwnPropertyNames(執行個體或原型)

  如果在調用建構函式建立一個執行個體後,重寫原型對象,那麼執行個體的[[prototype]]無法指向新的原型對象。P156

  原型模式弊端:所有執行個體擁有相同屬性值,由於共用,執行個體1的修改會在執行個體2中體現出來

7.組合使用建構函式模式和原型模式:將屬性定義在建構函式中,原型定義方法和需要共用的屬性

8.動態原型模式:當方法不存在時,就在原型建立方法

9.寄生建構函式模式:在建構函式中建立新對象,再返回該對象。

  建構函式在不傳回值的時候,預設會返回新對象執行個體。通過在建構函式的末尾添加一個return,可以重寫調用建構函式返回的值。

10.穩妥建構函式模式:避免使用this和new,某些屬性值只有通過唯一的方法才能訪問。

js高程筆記6章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.