關於JavaScript中對象的繼承(es5以及es6和單例模式本身理解)

關於JavaScript中對象的繼承

JavaScript是一種面向對象的弱類型語音,它的繼承也是很是強大的特性之一.node

咱們想要實現JavaScript中的繼承咱們首先須要創造一個父類:es6

建立對象後,在es5中咱們能夠用兩種方式來繼承父類:數據庫

1.使用對象冒充的方式繼承(構造繼承):設計模式

使用這種方式繼承對象時,會有一個缺陷,就是對象原型上的方法和屬性都沒法繼承.咱們進行以下測試:函數

2.使用原型鏈的方式繼承:

這個方式能夠繼承原型鏈上的方法和屬性,可是在實例化子類的時候沒法給父類傳參,咱們進行以下測試:

不過咱們能夠把這兩個方法結合起來使用:工具

結合使用後咱們發現這樣作既能夠繼承父類的方法和屬性,也能向父類傳參.

在ECMAScript 6中:

咱們可使用關鍵字class來建立類,在這個類中咱們能夠定義構造函數,能夠設置值和獲取值:性能

在es6中的繼承,咱們會使用另外一個關鍵字extends,並使用super關鍵字將子類的數據傳參給父類:

最後我介紹一下單例模式:

單例模式的設計模式屬於建立型模式,它提供了一種建立對象的最佳方式。這種模式涉及到一個單一的類,該類負責建立本身的對象,同時確保只有單個對象被建立。這個類提供了一種訪問其惟一的對象的方式,能夠直接訪問,不須要實例化該類的對象。測試

這種模式一般會用在鏈接數據庫上或者是工具類等等.es5

那麼在JavaScript中咱們應該如何使用呢?設計

在咱們node.js鏈接數據庫中,咱們能夠先定義一個這樣的類:

當咱們用 var db = new Db(); 來調用的時候,咱們每一次調用都會實例化這個類,那樣咱們我每次實例化都會觸發構造函數,從而會屢次鏈接數據庫,性能低,因此咱們會在這個類中寫一個靜態方法來返回這個實例化的類,而且咱們能夠直接在構造函數中直接調用鏈接數據庫的方法,從而進一步提升性能,代碼以下:

在這種模式下,咱們實例化多個對象,咱們構造函數只會實例化一次,從而大大提升了咱們鏈接數據庫的性能.

最後歡迎各位大佬評論個人文章,個人文章若有不對的地方歡迎修正~謝謝你們~

相關文章
相關標籤/搜索