<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • JavaScript中實(shí)現(xiàn)繼承的方式有哪些

            JavaScript中實(shí)現(xiàn)繼承的方式有哪些,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

            泰來(lái)網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,泰來(lái)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為泰來(lái)1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的泰來(lái)做網(wǎng)站的公司定做!

            繼承的含義:

            繼承是面向?qū)ο缶幊讨械囊粋€(gè)重要概念,通過(guò)繼承可以使子類的實(shí)例擁有在父類中定義的屬性和方法。

            1、原型鏈繼承

            function UserBase(){ } function User(){ } User.prototype = new UserBase();

            將父類的實(shí)例作為子類的原型。

            • (1)不能向構(gòu)造函數(shù)傳參,無(wú)法實(shí)現(xiàn)多繼承

            • (2)來(lái)自原型對(duì)象的引用屬性是所有實(shí)例共享的

            2、構(gòu)造繼承

            實(shí)際上使用父類的構(gòu)造函數(shù)來(lái)增強(qiáng)子類,等于是把父類的構(gòu)造函數(shù)復(fù)制給子類。

            function UserBase(){ } function User(userName) {     UserBase.call(this);     this.userName = userName; } let user = new User("鬼鬼") user.userName;

            優(yōu)點(diǎn):

            (1)可以向構(gòu)造函數(shù)傳參數(shù)

            (2)可以實(shí)現(xiàn)多繼承,多call幾個(gè)

            缺點(diǎn):

            (1)無(wú)法實(shí)現(xiàn)函數(shù)復(fù)用

            (2)只能繼承父類的屬性和方法,不能繼承父類的原型

            3、實(shí)例繼承

            為父類實(shí)例添加新屬性,作為子類實(shí)例返回。

            function UserBase(){ } function User(userName) {   let userBase = new UserBase();   userBase.userName = userName;   return userBase; } let user = new User("鬼鬼") user.userName;

            缺點(diǎn):無(wú)法實(shí)現(xiàn)多繼承

            4、拷貝繼承

            function UserBase(userName){ } UserBase.prototype.showInfo = function(){  console.log(this.userName) } function User(userName) {  let userBase = new UserBase();  for (let attr in userBase) {    User.prototype[attr] = userBase[attr];  }  this.userName = userName; }  let user = new User("鬼鬼") user.showInfo();
            • 優(yōu)點(diǎn):支持多繼承

            • 缺點(diǎn):占用內(nèi)存高,因?yàn)橐胒or in循環(huán)來(lái)拷貝父類屬性/方法

            不可枚舉方法拷貝不了

            5、組合繼承

            通過(guò)調(diào)用父類構(gòu)造函數(shù),繼承了父類的屬性,并保留了傳參的優(yōu)點(diǎn)。

            然后再將父類實(shí)例作為子類原型,實(shí)現(xiàn)了函數(shù)復(fù)用。

            function UserBase(userName){  this.userName = userName } UserBase.prototype.showInfo = function(){  console.log(this.userName) } function User (userName){     //call方式   UserBase.call(this,userName)      //apply方式      UserBase.apply(this,[userName]) } User.prototype = new UserBase() let user = new User("鬼鬼") user.showInfo();

            優(yōu)點(diǎn):

            • (1)繼承父類的屬性和方法,也繼承了父類的原型

            • (2)可傳參,函數(shù)可復(fù)用

            缺點(diǎn):

            調(diào)用了兩次父類構(gòu)造函數(shù)

            6、寄生組合繼承

            通過(guò)寄生的方式,去掉了父類的實(shí)例屬性,在調(diào)用父類構(gòu)造函數(shù)時(shí),

            就不會(huì)初始化兩次實(shí)例方法,避免了組合繼承的缺點(diǎn)

            function UserBase(userName){  this.userName = userName } UserBase.prototype.showInfo = function(){  console.log(this.userName) } function User (userName){  UserBase.call(this,userName) } User.prototype = Object.create(UserBase.prototype) User.prototype.constructor = User let user = new User("鬼鬼") user.showInfo();

            7、Class繼承

            class UserBase{  constructor(userName){   this.userName = userName  }  showInfo(){   console.log(this.userName)  } } class User extends UserBase{  constructor(value){   super(value)   } } var user = new User("鬼鬼") user.showInfo();

            看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

            本文標(biāo)題:JavaScript中實(shí)現(xiàn)繼承的方式有哪些
            本文網(wǎng)址:http://www.jbt999.com/article40/pdpsho.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化企業(yè)網(wǎng)站制作網(wǎng)站策劃App開發(fā)軟件開發(fā)動(dòng)態(tài)網(wǎng)站

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            微信小程序開發(fā)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 99久草视频网 | 五月婷婷丁香 | 日本免费成人黄色网址 | 亚洲无码高清电影 | 欧美乱码 |