成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JS有哪些方式可以實現(xiàn)繼承?

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

[[401859]]

繼承的含義:

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

1、原型鏈繼承

  1. function UserBase(){ 
  2. function User(){ 
  3. User.prototype = new UserBase(); 

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

  • (1)不能向構(gòu)造函數(shù)傳參,無法實現(xiàn)多繼承
  • (2)來自原型對象的引用屬性是所有實例共享的

2、構(gòu)造繼承

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

  1. function UserBase(){ 
  2. function User(userName) { 
  3.     UserBase.call(this); 
  4.     this.userName = userName; 
  5. let user = new User("鬼鬼"
  6. user.userName; 

優(yōu)點:

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

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

缺點:

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

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

3、實例繼承

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

  1. function UserBase(){ 
  2. function User(userName) { 
  3.   let userBase = new UserBase(); 
  4.   userBase.userName = userName; 
  5.   return userBase; 
  6. let user = new User("鬼鬼"
  7. user.userName; 

缺點:無法實現(xiàn)多繼承

4、拷貝繼承

  1. function UserBase(userName){ 
  2. UserBase.prototype.showInfo = function(){ 
  3.  console.log(this.userName) 
  4. function User(userName) { 
  5.  let userBase = new UserBase(); 
  6.  for (let attr in userBase) { 
  7.    User.prototype[attr] = userBase[attr]; 
  8.  } 
  9.  this.userName = userName; 
  10.  
  11. let user = new User("鬼鬼"
  12. user.showInfo(); 
  • 優(yōu)點:支持多繼承
  • 缺點:占用內(nèi)存高,因為要用for in循環(huán)來拷貝父類屬性/方法

不可枚舉方法拷貝不了

5、組合繼承

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

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

  1. function UserBase(userName){ 
  2.  this.userName = userName 
  3. UserBase.prototype.showInfo = function(){ 
  4.  console.log(this.userName) 
  5. function User (userName){ 
  6.     //call方式  
  7.  UserBase.call(this,userName) 
  8.      //apply方式  
  9.     UserBase.apply(this,[userName]) 
  10. User.prototype = new UserBase() 
  11. let user = new User("鬼鬼"
  12. user.showInfo();  

優(yōu)點:

  • (1)繼承父類的屬性和方法,也繼承了父類的原型
  • (2)可傳參,函數(shù)可復(fù)用

缺點:

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

6、寄生組合繼承

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

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

  1. function UserBase(userName){ 
  2.  this.userName = userName 
  3. UserBase.prototype.showInfo = function(){ 
  4.  console.log(this.userName) 
  5. function User (userName){ 
  6.  UserBase.call(this,userName) 
  7. User.prototype = Object.create(UserBase.prototype) 
  8. User.prototype.constructor = User 
  9. let user = new User("鬼鬼"
  10. user.showInfo();  

7、Class繼承

  1. class UserBase{ 
  2.  constructor(userName){ 
  3.   this.userName = userName 
  4.  } 
  5.  showInfo(){ 
  6.   console.log(this.userName) 
  7.  } 
  8. class User extends UserBase{ 
  9.  constructor(value){ 
  10.   super(value)  
  11.  } 
  12. var user = new User("鬼鬼"
  13. user.showInfo(); 

參考資料

https://blog.csdn.net/guoqing2016/article/details/106418081/

http://www.bubuko.com/infodetail-2556919.html

本文轉(zhuǎn)載自微信公眾號「前端人」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系前端人公眾號。

 

責(zé)任編輯:武曉燕 來源: 前端人
相關(guān)推薦

2024-02-26 14:07:18

2022-04-14 20:43:24

JavaScript原型鏈

2023-02-08 08:43:55

前端繼承原型

2022-09-27 12:01:56

Spring異步調(diào)用方式

2024-03-29 09:00:51

前端數(shù)據(jù)后端

2019-07-15 10:49:16

區(qū)塊鏈互聯(lián)網(wǎng)云計算

2021-07-16 04:56:03

NodejsAddon

2016-01-06 15:00:49

2023-05-08 16:29:34

2022-09-28 14:54:07

Spring注解方式線程池

2010-08-03 10:41:14

執(zhí)行DB2數(shù)據(jù)庫

2023-10-30 11:53:37

繼承JS父類

2011-03-10 14:19:56

JavaScript

2012-11-22 10:22:03

網(wǎng)絡(luò)接入ADSLModem

2022-09-26 13:46:18

Java線程安全

2020-04-24 10:19:18

物聯(lián)網(wǎng)藍(lán)牙數(shù)據(jù)

2023-09-20 00:27:40

Linux系統(tǒng)

2009-05-13 11:50:17

C#多繼承接口

2022-01-13 11:25:37

區(qū)塊鏈游戲技術(shù)

2025-03-11 09:00:00

Spring依賴注入Java
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91中文字幕| 国产综合网站 | 欧美精品综合在线 | 日韩久久久久久久 | 亚洲欧美在线视频 | 久久精品免费一区二区 | 91久久视频 | 精品国产一区二区在线 | 中文区中文字幕免费看 | 91精品在线播放 | 国产高清精品一区二区三区 | 欧美视频 亚洲视频 | 国产91综合一区在线观看 | tube国产| 伊人久久麻豆 | 91资源在线| xxxxx黄色片| 在线观看深夜视频 | 国产精品夜间视频香蕉 | 婷婷丁香在线视频 | 日本久久精品 | 一本色道精品久久一区二区三区 | 久久综合香蕉 | 欧美性乱 | 亚洲精品一区中文字幕乱码 | 欧美日韩精品 | 国产精产国品一二三产区视频 | 亚洲欧美综合精品另类天天更新 | 欧美国产日韩在线 | 久久久成人一区二区免费影院 | 一区中文字幕 | 中文字幕高清av | 操人视频在线观看 | 久久伊人一区二区 | 日本色高清 | 国产成在线观看免费视频 | 天天激情综合 | 中文字幕久久久 | 精品1区| 黄色精品| 狠狠天天 |