精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

React Native填坑之旅--class(番外篇)

開發 前端
無論React還是RN都已經邁入了ES6的時代,甚至憑借Babel的支持都進入了ES7。ES6內容很多,本文主要講解類相關的內容。

[[173899]]

無論React還是RN都已經邁入了ES6的時代,甚至憑借Babel的支持都進入了ES7。ES6內容很多,本文主要講解類相關的內容。

構造函數

定義偵探類作為例子。

ES5的“類”是如何定義的。 

  1. function ES5Detective() { 
  2.   console.log('##ES5Detective contructor'); 
  3.  

ES6定義類:

  1. class ES6Detective { 
  2.   constructor() { 
  3.     console.log('Detective constructor'); 
  4.   } 
  5.  

ES6使用了class關鍵字,而且有專門的constructor。ES5里的function ES5Detective既是類的定義,也是構造函數。

屬性

看看這個偵探是從哪本書出來的。

ES5:

  1. ES5Detective.prototype.fromBookName = 'who'

ES6:

  1. class ES6Detective { 
  2.   detectiveName: string; 
  3.   _bookName: string; 
  4.  
  5.   constructor() { 
  6.     console.log('Detective constructor'); 
  7.     this.detectiveName = 'Detective who'; // 屬性 
  8.   } 
  9.  

ES6 getter & setter

  1. class ES6Detective { 
  2.   detectiveName: string; 
  3.   _bookName: string; 
  4.  
  5.   constructor() { 
  6.     console.log('Detective constructor'); 
  7.     this.detectiveName = 'Detective who'
  8.     this._bookName = 'who'
  9.   } 
  10.  
  11.   get fromBookName() { 
  12.     return this._bookName; 
  13.   } 
  14.  
  15.   set fromBookName(value) { 
  16.     this._bookName = value; 
  17.   } 
  18.  

如果只有getter沒有setter而賦值的話就會出現下面的錯誤:

  1. detective.bookAuthor = 'A C'
  2.                      ^ 
  3.  
  4. TypeError: Cannot set property bookAuthor of #<ES6Detective> which has only a getter  

實例方法

偵探是如何解決案件的。

ES5:

  1. ES5Detective.prototype.solveCase = function(caseName) { 
  2.   var dn = this.dectiveName; 
  3.   if(!caseName) { 
  4.     console.log('SOLVE CASE: ' + dn + ' no case to solve'); 
  5.   } else { 
  6.     console.log('SOLVE CASE: ' + dn + ' get case ' + caseName + ' is solved'); 
  7.   } 
  8. };  

或者:

  1. function ES5Detective() { 
  2.   this.dectiveName = 'Detective who'
  3.   console.log('##ES5Detective contructor'); 
  4.   // 實例方法 
  5.   this.investigate = function(scene) { 
  6.     console.log('investigate ' + scene); 
  7.   } 
  8.  
  9.   this.assistant = "assistant who"
  10.  

ES6: 

  1. class ES6Detective { 
  2.   detectiveName: string; 
  3.   _bookName: string; 
  4.  
  5.   constructor() { 
  6.     console.log('Detective constructor'); 
  7.     this.detectiveName = 'Detective who'
  8.     this._bookName = 'who'
  9.   } 
  10.  
  11.   solveCase(caseName) { 
  12.     if(!caseName) { 
  13.       console.log('no case to solve'); 
  14.     } else { 
  15.       console.log('case ' + caseName + ' is solved'); 
  16.     } 
  17.   } 
  18.  

ES6添加方法非常簡單直接。ES5中添加實例方法有兩種方法,一是在prototype里定義,一是在構造函數重定義。在構造函數中定義的實例方法和屬性在每一個實例中都會保留一份,而在原型中定義的實例方法和屬性是全部實例只有一份。

另外,在ES5的構造函數重定義的實例方法可以訪問類的私有變量。比如:

  1. function ES5Detective() { 
  2.   console.log('##ES5Detective contructor'); 
  3.  
  4.   var available: boolean = true; // private field. default income is ZERO. 
  5.   this.investigate = function(scene) { 
  6.     if (available) { 
  7.       console.log('investigate ' + scene); 
  8.     } else { 
  9.       console.log(`i'm not available`); 
  10.     } 
  11.   } 
  12.  

在其他的方法訪問的時候就會報錯。

  1. if (!available) { 
  2.  
  3.  

靜態方法

ES5:

  1. ES5Detective.countCases = function(count) { 
  2.   if(!count) { 
  3.     console.log('no case solved'); 
  4.   } else { 
  5.     console.log(`${count} cases are solved`); 
  6.   } 
  7. };  

類名后直接定義方法,這個方法就是靜態方法。

  1. ES5Detective.countCases(); 

ES6:

  1. class ES6Detective { 
  2.   static countCases() { 
  3.     console.log(`Counting cases...`); 
  4.   } 
  5.  
  6. // call it 
  7. ES6Detective.countCases();  

繼承

ES6使用extends關鍵字實現繼承。

ES5:

  1. function ES5Detective() { 
  2.   var available: boolean = true; // private field. 
  3.  
  4.   this.dectiveName = 'Detective who'
  5.   console.log('##ES5Detective contructor'); 
  6.  
  7.   this.investigate = function(scene) { 
  8.     // 略  
  9.   } 
  10.  
  11.   this.assistant = "assistant who"
  12.  
  13. ES5Detective.prototype.solveCase = function(caseName) { 
  14.   // 略 
  15.  
  16. // inheritance 
  17. function ES5DetectiveConan() { 
  18.   // first line in constructor method is a must!!! 
  19.   ES5Detective.call(this); 
  20.  
  21.   this.dectiveName = 'Conan'
  22.  
  23. // inheritance 
  24. ES5DetectiveConan.prototype = Object.create(ES5Detective.prototype); 
  25. ES5DetectiveConan.prototype.constructor = ES5DetectiveConan;  

ES5繼承的時候需要注意兩個地方:

  1. 需要在子類的構造函數里調用SuperClass.call(this[, arg1, arg2, ...])
  2. 子類的prototype賦值為:SubClass.prototype = Object.create(SuperClass.prototype),然后把構造函數重新指向自己的:SubClass.prototpye.constructor = SubClass。

ES6:

  1. class ES6Detective { 
  2.   constructor() { 
  3.     console.log('Detective constructor'); 
  4.     this.detectiveName = 'Detective who'
  5.     this._bookName = 'who'
  6.   } 
  7.  
  8.   solveCase(caseName) { 
  9.     if(!caseName) { 
  10.       console.log('no case to solve'); 
  11.     } else { 
  12.       console.log('case ' + caseName + ' is solved'); 
  13.     } 
  14.   } 
  15.  
  16.   get fromBookName() { 
  17.     return this._bookName; 
  18.   } 
  19.  
  20.   set fromBookName(value) { 
  21.     this._bookName = value; 
  22.   } 
  23.  
  24.   get bookAuthor() { 
  25.     return 'Author Who'
  26.   } 
  27.  
  28.   static countCases() { 
  29.     console.log(`Counting cases...`); 
  30.   } 
  31.  
  32. class ES6DetectiveConan extends ES6Detective { 
  33.   constructor() { 
  34.     super(); 
  35.     console.log('ES6DetectiveConan constructor'); 
  36.   } 
  37.  

ES6的新語法更加易懂。

注意:一定要在子類的構造方法里調用super()方法。否則報錯。

調用super類內容

  1. class ES6DetectiveConan extends ES6Detective { 
  2.   constructor() { 
  3.     super(); 
  4.     console.log('ES6DetectiveConan constructor'); 
  5.   } 
  6.  
  7.   solveCase(caseName) { 
  8.     super.solveCase(caseName); 
  9.  
  10.     if(!caseName) { 
  11.       console.log('CONAN no case to solve'); 
  12.     } else { 
  13.       console.log('CONAN case ' + caseName + ' is solved'); 
  14.     } 
  15.   } 
  16.  

靜態方法可以被繼承

ES6的靜態方法可以被繼承。ES5的不可以。

  1. class ES6Detective { 
  2.   static countCases(place) { 
  3.     let p = !place ? '[maybe]' : place; 
  4.     console.log(`Counting cases...solve in ${p}`); 
  5.   } 
  6.  
  7. class ES6DetectiveConan extends ES6Detective { 
  8.   constructor() { 
  9.     super(); 
  10.     console.log('ES6DetectiveConan constructor'); 
  11.   } 
  12.  
  13. // static method 
  14. ES6Detective.countCases(); 
  15. ES6DetectiveConan.countCases('Japan'); 
  16.  
  17. // result 
  18. Counting cases...solve in [maybe] 
  19. Counting cases...solve in Japan  

在子類ES6DetectiveConan并沒有定義任何方法,包括靜態方法。但是,在父類和子類里都可以調用該方法。

甚至,可以在子類里調用父類的靜態方法:

  1. class ES6DetectiveConan extends ES6Detective { 
  2.   static countCases(place) { 
  3.     let p = !place ? '[maybe]' : place; 
  4.     super.countCases(p); 
  5.     console.log(`#Sub class:- Counting cases...solve in ${p}`); 
  6.   } 
  7.  
  8. // result 
  9. Counting cases...solve in [maybe] 
  10. Counting cases...solve in Japan 
  11. #Sub class:- Counting cases...solve in Japan  

代碼

https://github.com/future-cha...

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2025-07-10 07:33:05

2024-04-16 08:08:54

DTC國產庫產品

2025-08-08 07:30:49

數據數據庫閃回

2012-09-11 11:29:25

2016-10-13 19:01:59

React NativUbuntu

2021-11-18 08:55:49

共享CPU內存

2024-06-04 22:20:02

2024-07-08 00:00:07

2023-06-24 17:09:06

React前端

2016-08-12 13:55:06

2015-09-22 09:50:36

FacebookAndroid

2016-08-12 08:49:46

React NativFacebookNative

2017-09-11 14:35:34

編輯器開發環境React

2023-06-12 07:00:40

Rust進度任務

2021-03-31 08:33:17

SysTick定時器SysTick定時器

2017-03-09 13:29:04

ReactNative JSPatch

2017-03-21 21:37:06

組件UI測試架構

2024-02-20 01:53:01

ReactFlutter開發

2016-08-15 13:34:37

React NativiOSjs入口

2024-01-19 09:03:06

ReactTypeScripFlexbox
點贊
收藏

51CTO技術棧公眾號

国产91精品久久久久久久网曝门| 成人aaaa| 精品国产福利在线| 麻豆av一区二区三区久久| 亚洲午夜18毛片在线看| 欧美一站二站| 日韩精品综合一本久道在线视频| 日韩中字在线观看| 在线观看免费高清完整| 国产伦理精品不卡| 26uuu另类亚洲欧美日本老年| 91中文字幕永久在线| 日日狠狠久久| 午夜国产不卡在线观看视频| 亚洲乱码一区二区三区| 成人免费公开视频| 免费人成黄页网站在线一区二区| 九九精品视频在线| 日本xxxxxxxxx18| 欧美三级电影网址| 婷婷国产在线综合| 国产精品无码乱伦| 四虎影院在线播放| 青草av.久久免费一区| 欧美寡妇偷汉性猛交| 波多野结衣片子| 日韩中文一区二区| 欧美日韩精品一区二区三区蜜桃 | 日韩黄色网络| 欧美精品亚洲一区二区在线播放| 拔插拔插海外华人免费| 日本免费在线视频| 久久久久久久久97黄色工厂| www日韩av| 在线观看视频二区| 欧美一级二区| 久久久久久久国产精品| jizzjizzjizz国产| 国产精品一线天粉嫩av| 欧美精品一区视频| 波多野结衣中文字幕在线播放| 裤袜国产欧美精品一区| 亚洲国产精品一区二区尤物区| 伊人狠狠色丁香综合尤物| 你懂的视频在线| 成人av第一页| 99理论电影网| 国产绿帽刺激高潮对白| 美美哒免费高清在线观看视频一区二区 | 好吊操视频这里只有精品| 国产精品无码久久久久| 色欧美乱欧美15图片| 777精品久无码人妻蜜桃| 爱看av在线入口| 亚洲综合无码一区二区| 一级全黄肉体裸体全过程| av免费观看一区二区| 国产日韩成人精品| 欧美一区2区三区4区公司二百| 少妇精品视频一区二区| 成年人网站91| 精品久久久久久乱码天堂| 蜜桃91麻豆精品一二三区 | 国产精品高潮视频| 亚洲av无码不卡| 日韩国产欧美在线观看| 国产精品第一区| 亚洲av综合一区| 秋霞午夜鲁丝一区二区老狼| 国产精品久久久久秋霞鲁丝| 一级片免费在线播放| 性伦欧美刺激片在线观看| 欧美一级淫片videoshd| 特级西西444www大精品视频免费看 | 亚洲国产成人久久| 国产麻豆剧传媒精品国产av| 大奶在线精品| 日韩精品中文字幕在线| 久久久久无码精品国产sm果冻 | 亚洲精品720p| 日韩一级视频在线观看| 欧美日韩国产高清电影| 中文字幕亚洲综合久久筱田步美| 国产精品69久久久久孕妇欧美| 999精品在线| 萌白酱国产一区二区| 久久久久黄色片| 国产一区白浆| 国产精品狼人色视频一区| ,一级淫片a看免费| 高潮精品一区videoshd| 欧美动漫一区二区| 欧美jizzhd69巨大| 亚洲电影在线免费观看| 超碰网在线观看| 91精品国产一区二区在线观看| 日韩欧美在线网站| 黄色在线观看av| 91视频久久| 欧美成在线视频| 久久久久久久久久久久久av| 蜜桃视频一区二区三区 | 干日本少妇首页| 久久天天久久| 亚洲电影免费观看高清| 2014亚洲天堂| 99亚洲一区二区| 国产精品永久免费观看| 亚洲男人天堂久久| 国产精品国产a级| 国产欧美日韩网站| 日韩漫画puputoon| 亚洲精品一区二区三区福利| 色婷婷国产精品免| 一本久久综合| 92裸体在线视频网站| 青青青草原在线| 一区二区三区四区亚洲| 黑森林精品导航| 国产成人tv| 久久亚洲春色中文字幕| 无码人妻丰满熟妇精品| 成人视屏免费看| 自拍偷拍视频在线| jizzyou欧美16| 日韩av在线导航| 久久久久久av无码免费网站| 精品一区二区三区不卡| 日韩欧美视频一区二区| 91高清视频在线观看| 欧美一区三区四区| 你懂得在线观看| 三级久久三级久久久| 精品国产一区二区三区四区vr| 久草免费在线| 欧美性生交片4| 亚洲久久久久久| 国语精品一区| 91成人理论电影| 秋霞午夜理伦电影在线观看| 欧美性感一类影片在线播放| 久久人人爽人人爽人人片| 国模 一区 二区 三区| 91久久精品一区| 香蕉视频网站在线观看| 在线观看成人小视频| 蜜桃传媒一区二区亚洲av| 亚洲视频一区| 99视频在线免费观看| 永久免费网站在线| 欧美一区二区三区喷汁尤物| 91n在线视频| 久久国产精品免费| 一区二区三区四区在线视频| se69色成人网wwwsex| 国产亚洲视频在线| 日韩国产成人在线| 日本一区二区三区国色天香| 精品久久久噜噜噜噜久久图片 | 精品视频一区在线视频| 国产精品黄色网| 99riav一区二区三区| 男人日女人下面视频| 亚洲精品合集| 日本欧美一级片| 国产福利第一视频在线播放| 精品1区2区3区| fc2ppv在线播放| 国产在线国偷精品免费看| 九一免费在线观看| 成人av影音| 7m第一福利500精品视频| 亚洲欧洲视频在线观看| 欧美亚洲一区二区在线| 日本少妇aaa| 国产一区二区三区精品视频| 男人天堂a在线| 天堂成人娱乐在线视频免费播放网站| 青青草成人在线| 香蕉视频免费在线播放| 欧美sm美女调教| 日韩精品视频免费播放| 国产香蕉久久精品综合网| 久久婷婷综合色| 在线国产一区二区| 精品一区二区日本| 91在线成人| 欧美人在线观看| 欧美xxx.com| 欧美日韩精品一二三区| 国产午夜精品无码| 国产午夜久久久久| 欧美69精品久久久久久不卡 | 男女污污的视频| 亚洲欧洲中文字幕| 久久久久久国产精品mv| 久久日本片精品aaaaa国产| 欧美精品久久一区二区 | av在线不卡观看免费观看| 国产裸体免费无遮挡| 小处雏高清一区二区三区| 国产视频在线观看一区| a屁视频一区二区三区四区| 欧美黑人国产人伦爽爽爽| 国产系列电影在线播放网址| 91精品国产aⅴ一区二区| 日韩污视频在线观看| 国产精品久久久久久久裸模| 中文字幕乱视频| 久久er99热精品一区二区| 缅甸午夜性猛交xxxx| 欧美独立站高清久久| 好吊色欧美一区二区三区视频| 久久精品嫩草影院| 欧美在线视频免费观看| 中文字幕在线播放网址| 国产午夜精品视频| 日韩一级片免费观看| 7777精品伊人久久久大香线蕉 | 欧洲精品一区二区三区在线观看| 欧美交换国产一区内射| 国产精品三级久久久久三级| 97香蕉碰碰人妻国产欧美 | 神马久久高清| 日韩三级在线免费观看| 伊人色综合久久久| 欧美色道久久88综合亚洲精品| 日韩a级片在线观看| 欧美激情一区二区三区不卡| 久久精品女同亚洲女同13| 国产在线不卡一区| 男女视频在线看| 免费一区视频| 免费一级特黄特色毛片久久看| 一本一道久久综合狠狠老| 亚洲精品国产精品国自产| 免费一区二区三区视频导航| 国产在线视频欧美一区二区三区| 欧美日韩黄色| 91欧美精品成人综合在线观看| 性欧美freehd18| 日本电影亚洲天堂| 天堂av中文在线观看| 97精品视频在线| av影片在线| 久久久这里只有精品视频| 日韩精品卡一| 欧美激情精品久久久| 午夜av在线播放| 久久91精品国产91久久久| 国产鲁鲁视频在线观看特色| 俺去了亚洲欧美日韩| 午夜视频成人| 北条麻妃一区二区三区中文字幕| 毛片网站在线免费观看| www.日本久久久久com.| 男人天堂久久久| 久久精品99久久久久久久久| 日本激情视频在线观看| 久久久精品视频成人| 免费的黄网站在线观看| 久久夜色精品国产欧美乱| 中文字幕在线三区| 高清亚洲成在人网站天堂| 岛国av在线播放| 欧洲成人在线观看| 亚洲精品在线影院| 国产日韩av在线播放| 国产精品免费精品自在线观看| 91亚洲国产成人精品性色| 日本综合精品一区| 国产综合精品一区二区三区| 亚洲欧洲免费| 亚洲精品白虎| 欧美一区亚洲| 国产极品尤物在线| 日韩精品一区第一页| 国产乱女淫av麻豆国产| 国产不卡视频一区二区三区| av在线播放网址| 国产天堂亚洲国产碰碰| 五月天色婷婷丁香| 亚洲综合免费观看高清在线观看| 五月天综合在线| 欧美在线观看视频一区二区| 亚洲图片在线播放| 精品国产一区久久| 久久综合九色综合久| 久久视频国产精品免费视频在线| 精精国产xxxx视频在线中文版 | 亚洲成年人影院在线| 日本福利午夜视频在线| 视频在线观看99| av不卡高清| 国产精品入口免费视频一| 亚洲一区二区免费在线观看| 欧美第一黄网| 欧美福利视频| 熟女少妇精品一区二区| 国产精品一区二区在线观看网站| 欧美一级片黄色| 国产精品嫩草99a| 日产欧产va高清| 日韩欧美卡一卡二| 91社区视频在线观看| 亚洲欧美日韩国产另类专区 | 亚洲精品水蜜桃| 国产一区二区99| 9191成人精品久久| 日本黄在线观看| 色综合天天狠天天透天天伊人| 欧美日韩大片| 国产精品伊人日日| 97在线精品| 69堂免费视频| 国产乱淫av一区二区三区| 国产jk精品白丝av在线观看| 亚洲一区二区3| 国产又粗又猛又黄| 国产亚洲精品久久久久动| 白白色在线观看| 成人久久一区二区| 欧美一站二站| 99精品免费在线观看| 成人网在线播放| 91久久久久久久久久久久久久| 日韩欧美在线视频日韩欧美在线视频| 99热这里只有精品66| 自拍偷拍亚洲在线| 日本国产欧美| 免费在线国产精品| 亚洲国产裸拍裸体视频在线观看乱了中文| 97超碰成人在线| 国产日韩av一区| 久久久久久久久久免费视频 | 不卡中文字幕在线观看| 91蜜桃视频在线| 五月婷婷激情网| 精品第一国产综合精品aⅴ| 成码无人av片在线观看网站| 国产精自产拍久久久久久| 国产中文字幕一区二区三区 | 久久精品国产精品亚洲红杏 | 国产精品久久久久久久免费看 | 精品久久久久久久久久| 亚洲国产欧美另类| 欧美二区乱c黑人| 欧美久久一区二区三区| 四虎精品欧美一区二区免费| 精品综合久久久久久8888| 黄色激情小视频| 欧美视频精品在线观看| 幼a在线观看| 国产女人精品视频| 香蕉精品视频在线观看| 午夜影院免费版| 亚洲激情图片qvod| 亚洲国产精品suv| 欧美激情视频一区| 国产精品x8x8一区二区| 你真棒插曲来救救我在线观看| 成人午夜免费视频| 天天做天天爱夜夜爽| 日韩精品极品视频| 免费亚洲电影| 亚洲成色www久久网站| 久久er99热精品一区二区| 国产精品三区在线观看| 欧美大片在线观看| 成人在线黄色电影| 欧美亚洲丝袜| 美女在线一区二区| 草视频在线观看| 亚洲黄色www网站| 欧洲av不卡| 中文字幕色一区二区| 国产二区国产一区在线观看| 久久亚洲国产成人精品性色| 亚洲国产精品悠悠久久琪琪| 欧美无毛视频| 最近看过的日韩成人| 粉嫩高潮美女一区二区三区| 免费黄色网址在线| 久久精品国亚洲| 欧美人妖视频| 午夜国产一区二区三区| 亚洲免费观看高清完整版在线| 丰满人妻一区二区| 国产精品成人免费电影| 在线一区电影| 亚洲最大成人网站| 91麻豆精品91久久久久久清纯| 91超碰免费在线| 神马影院午夜我不卡| 国产精品亚洲一区二区三区在线| 国产精品午夜影院| 久久久91精品国产一区不卡| 日本成人7777| 在线观看免费视频污| 欧美日韩亚洲视频|