js繼承有多種繼承方式症昏,但最常用的是組合模式润梯,代碼例子如下
? ? ?在這種方式下,把實(shí)例函數(shù)都保存在原型對(duì)象上社牲,這樣可以實(shí)現(xiàn)函數(shù)的復(fù)用粪薛,通過(guò)Super.call(this,age)繼承父類的屬性。這種方式有一點(diǎn)缺點(diǎn)搏恤,子類原型上有一份多余的父類實(shí)例屬性违寿,因?yàn)楦割惖臉?gòu)造函數(shù)被調(diào)用了兩次,生成了兩份熟空,而子類上的那份覆蓋了子類原型上的那一份原型藤巢,存在內(nèi)存浪費(fèi)的情況。
針對(duì)上述情況提出了寄生組合方式息罗,代碼如下:
這種方式中掂咒,提出了中間函數(shù),切掉了原型對(duì)象上多余的父類實(shí)例屬性迈喉。
隨著ES6標(biāo)準(zhǔn)的提出绍刮,出現(xiàn)了更優(yōu)雅的繼承方式,更接近于面向?qū)ο蟮木幊谭绞桨っ饕P(guān)鍵字是class和extends孩革,代碼如下: