js繼承

js繼承
js 繼承-簡書

原型鏈實(shí)現(xiàn)集繼承

function father(){
this.val=1;
this.arr=[1]
}
function son(){}
son.prototype=new father
var son1=new son()
var son2=new son()
son1.val=2
son2.varl    //1
son1.arr.push(2)
son2.arr      //[1,2]

上面的代碼實(shí)現(xiàn)原型鏈繼承最重要的son.prototype=new father
原型鏈繼承的優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):實(shí)現(xiàn)容易,操作簡單
缺點(diǎn):來自原型對象的引用屬性是所有實(shí)例都共享的,
另一個(gè)缺點(diǎn)就是 無法通過子類構(gòu)造器向父類傳參

構(gòu)造器函數(shù)實(shí)現(xiàn)繼承

function father(val){
this.val=val
this.arr=arr;
this.fun=function(){}
}
function son (val){
father.call(this,val)
}
var son1=new son(1)
var son2=new son(2)

核心:借用父類的構(gòu)造器來增強(qiáng)子類的實(shí)例,相當(dāng)于把父類的實(shí)例屬性復(fù)制一給子類裝上(完全沒有用到原型)
優(yōu)點(diǎn):解決了子類共享父類引用書屬性的問題
子類構(gòu)造器能夠向父類構(gòu)造器傳參
缺點(diǎn):無法實(shí)現(xiàn)函數(shù)的復(fù)用,每個(gè)子類實(shí)例都有一個(gè)自己的方法,太多了影響性能

組合發(fā)方式實(shí)現(xiàn)繼承

function super(){
this.val=2
this.arr=[2]
}
super.prototype.fun=function(){}
function sub(){
father.call(this)
}
sub.prototype=new super
var sub1=new sub()
var sub2=new sub()

核心:把實(shí)例函數(shù)都放在原型對象上,以實(shí)現(xiàn)函數(shù)復(fù)用。同時(shí)還要保留借用構(gòu)造函數(shù)方式的優(yōu)點(diǎn),通過Super.call(this);繼承父類的基本屬性和引用屬性并保留能傳參的優(yōu)點(diǎn);通過Sub.prototype = new Super();繼承父類函數(shù),實(shí)現(xiàn)函數(shù)復(fù)用

優(yōu)點(diǎn):不存在子類實(shí)例共享父類引用屬性的問題
可傳參
函數(shù)可復(fù)用
缺點(diǎn): 父類構(gòu)造器被實(shí)例化兩次,浪費(fèi)內(nèi)存

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文鏈接 js的繼承有6種方式,大致總結(jié)一下它們各自的優(yōu)缺點(diǎn),以及它們之間的關(guān)系。 1.原型鏈 js的繼承機(jī)制不同...
    空_城__閱讀 835評論 0 11
  • 前言 JS作為面向?qū)ο蟮娜躅愋驼Z言,繼承也是非常強(qiáng)大的特性之一,那么如何在JS實(shí)現(xiàn)繼承呢? JS繼承的實(shí)現(xiàn)方式 既...
    她是我的bug閱讀 387評論 0 1
  • 博客內(nèi)容:什么是面向?qū)ο鬄槭裁匆嫦驅(qū)ο竺嫦驅(qū)ο缶幊痰奶匦院驮瓌t理解對象屬性創(chuàng)建對象繼承 什么是面向?qū)ο?面向?qū)ο?..
    _Dot912閱讀 1,537評論 3 12
  • 我喜歡肚皮舞,被她的神秘、嫵媚所吸引,覺得她展現(xiàn)了女性所有的美好。但是關(guān)于選擇老師,我卻有些擔(dān)心。因?yàn)槲铱催^太多健...
    喵喵de小來福閱讀 226評論 0 0
  • 曾看到一篇反思當(dāng)下快餐文化、物欲之樓櫛比的新聞,文中提出了一個(gè)常見但是直擊人心的問題:為何在科技發(fā)達(dá)、物質(zhì)豐富的今...
    醫(yī)路修行閱讀 613評論 0 0

友情鏈接更多精彩內(nèi)容