js繼承有多種繼承方式,但最常用的是組合模式,代碼例子如下

? ? ?在這種方式下,把實例函數(shù)都保存在原型對象上,這樣可以實現(xiàn)函數(shù)的復用,通過Super.call(this,age)繼承父類的屬性。這種方式有一點缺點,子類原型上有一份多余的父類實例屬性,因為父類的構造函數(shù)被調用了兩次,生成了兩份,而子類上的那份覆蓋了子類原型上的那一份原型,存在內存浪費的情況。
針對上述情況提出了寄生組合方式,代碼如下:

這種方式中,提出了中間函數(shù),切掉了原型對象上多余的父類實例屬性。
隨著ES6標準的提出,出現(xiàn)了更優(yōu)雅的繼承方式,更接近于面向對象的編程方式,主要關鍵字是class和extends,代碼如下:
