真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript中實現(xiàn)繼承的方式有哪些

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

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

繼承的含義:

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

1、原型鏈繼承

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

將父類的實例作為子類的原型。

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

  • (2)來自原型對象的引用屬性是所有實例共享的

2、構(gòu)造繼承

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

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

優(yōu)點:

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

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

缺點:

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

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

3、實例繼承

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

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

缺點:無法實現(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)點:支持多繼承

  • 缺點:占用內(nèi)存高,因為要用for in循環(huán)來拷貝父類屬性/方法

不可枚舉方法拷貝不了

5、組合繼承

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

然后再將父類實例作為子類原型,實現(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)點:

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

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

缺點:

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

6、寄生組合繼承

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

就不會初始化兩次實例方法,避免了組合繼承的缺點

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)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


名稱欄目:JavaScript中實現(xiàn)繼承的方式有哪些
當前路徑:http://weahome.cn/article/pdpsho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部