精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人一区二区三区| 欧美日中文字幕| 亚洲综合视频在线观看| 成人看片视频| 国产精品免费无遮挡无码永久视频| 精品久久中文| 欧美成人a∨高清免费观看| 北条麻妃在线视频观看| 好了av在线| 久久这里都是精品| 99re国产| 国产精品成人久久久| 欧美日韩91| 中日韩美女免费视频网站在线观看| 一级黄色高清视频| 国产美女高潮在线观看| 中文字幕制服丝袜成人av| 国产一区二区三区高清| 一二三四区在线| 欧美一级视频| 久久久久久久国产精品视频| 天天干天天操天天拍| 欧美偷窥清纯综合图区| 91精品国产综合久久久久久久 | 日韩欧美高清视频| 激情视频小说图片| 亚洲s色大片| 91在线云播放| 国产超碰91| a视频免费在线观看| 男男成人高潮片免费网站| 69久久夜色精品国产69| 激情五月婷婷小说| 久久免费精品视频在这里| 日韩精品免费电影| 星空大象在线观看免费播放| 国产成人免费视频网站视频社区 | 亚洲视频综合在线| 欧美一区二区在线| 无码精品黑人一区二区三区 | 一级黄色片大全| 久久精品色播| 亚洲精品在线免费观看视频| 成人高清在线观看视频| 欧美爱爱视频| 日本高清免费不卡视频| av天堂永久资源网| 涩涩视频在线| 黄色一区二区在线观看| 大陆av在线播放| 美女日批视频在线观看| 一区二区三区四区不卡在线| 亚洲啊啊啊啊啊| 国产视频一区二区| 亚洲啪啪综合av一区二区三区| 一区二区三区欧美在线| 性开放的欧美大片| 国产精品家庭影院| 中国一区二区三区| www.久久ai| 一卡二卡三卡日韩欧美| 精品一二三四五区| 成人超碰在线| 精品美女久久久久久免费| 国产白丝袜美女久久久久| 深夜福利视频一区二区| 一本久道久久综合中文字幕| 日本成人在线免费视频| 69堂免费精品视频在线播放| 欧美三级电影精品| 涩多多在线观看| 午夜视频一区二区在线观看| 日韩一区二区精品在线观看| 亚洲av成人精品一区二区三区| 北条麻妃在线一区二区免费播放 | 91香蕉嫩草影院入口| 国产suv精品一区二区69| 国产成人在线视频网站| 精品福利影视| av女优在线| 亚洲色图20p| 久久久久久www| 中文字幕在线中文字幕在线中三区| 日本道免费精品一区二区三区| 在线免费视频一区| 麻豆一区在线| 日韩精品欧美激情| 国产精品69久久久久孕妇欧美| 亚洲精品888| 777午夜精品福利在线观看| 91丨九色丨海角社区| 久久精品国产亚洲aⅴ| 国产成人精品日本亚洲11| 欧美18xxxxx| 最新国产精品久久精品| 1024av视频| 日韩欧美专区| 亚洲黄页网在线观看| 色欲AV无码精品一区二区久久 | 欧美成人精品影院| 自拍偷拍欧美亚洲| 美国三级日本三级久久99| 成人激情av| av网站大全在线观看| 亚洲国产精品久久人人爱蜜臀| 无遮挡又爽又刺激的视频| 国产亚洲字幕| 亚洲性视频网站| 日韩黄色a级片| 激情深爱一区二区| 欧美日韩一区二区三区在线视频 | 欧美黄免费看| 国产精品亚洲自拍| 午夜福利一区二区三区| 亚洲视频免费观看| 日本成人黄色网| 欧美日韩一本| 九九热最新视频//这里只有精品| 欧美超碰在线观看| aaa亚洲精品| 国产黄色激情视频| 91丨精品丨国产| 在线看欧美日韩| 欧美亚洲精品天堂| 成人在线综合网站| 中文字幕日韩一区二区三区| 电影一区二区三| 精品国产污网站| 欧美偷拍第一页| 久久精品国产第一区二区三区| 久久久久久国产精品一区| 亚洲区欧洲区| 欧美群妇大交群的观看方式| 久久婷婷五月综合| 免费亚洲网站| 久久大香伊蕉在人线观看热2| 狂野欧美性猛交xxxxx视频| 91麻豆精品国产91久久久久久久久| 性欧美精品中出| 久久精品人人| 麻豆久久久av免费| 韩国成人漫画| 亚洲欧美一区二区三区久久| 免费观看一区二区三区毛片| 不卡的看片网站| 精品无码国产一区二区三区av| 国内不卡的一区二区三区中文字幕 | 国产精品福利在线| 日韩a在线观看| 欧美视频在线观看免费网址| 国产又粗又长又爽| 日韩午夜精品| 欧美美乳视频网站在线观看| 不卡福利视频| 亚洲图中文字幕| 中文字幕 自拍偷拍| 国产欧美一区二区精品仙草咪| 男人舔女人下面高潮视频| 欧美人与拘性视交免费看| 国产97免费视| 97超碰人人在线| 欧美夫妻性生活| 青青草手机视频在线观看| 岛国av在线一区| 欧美 日本 亚洲| 蜜臀91精品国产高清在线观看| 日韩美女在线播放| 男人的天堂在线视频免费观看 | 爱豆国产剧免费观看大全剧苏畅| 91久久电影| 国产超碰91| 成人影院网站| 最近2019中文字幕mv免费看 | 日韩乱码一区二区| 久久久久国色av免费看影院| 日韩在线第三页| 99久久夜色精品国产亚洲1000部 | 啄木系列成人av电影| 国产精品久久久久免费a∨大胸 | 少妇精品导航| 国产精品女人久久久久久| 久操视频在线免费播放| 欧美精品一区二区三区高清aⅴ| av大片在线免费观看| 亚洲国产激情av| 久久久久久无码精品人妻一区二区| 亚洲黄色免费| 亚洲二区三区四区| 亚洲伊人影院| 国产精品精品久久久| av毛片在线免费看| 亚洲精品视频免费| 国产普通话bbwbbwbbw| 亚洲第一主播视频| 综合 欧美 亚洲日本| 成人一区在线观看| 亚洲xxxx2d动漫1| 伊人成人在线视频| 婷婷久久伊人| 久久亚洲黄色| 亚洲在线第一页| 日日av拍夜夜添久久免费| 欧美成人全部免费| 成人av毛片| 精品99一区二区| 国产精品无码AV| 色一情一乱一乱一91av| 久久综合色综合| 国产精品美女一区二区三区| 国产伦精品一区二区三区88av| 日本不卡高清视频| 欧美激情视频免费看| 亚洲欧美色图| 亚洲一区二区三区乱码| 秋霞影视一区二区三区| 亚洲最大成人网色| 精品国产黄a∨片高清在线| 777精品视频| 免费在线看电影| 粗暴蹂躏中文一区二区三区| www.亚洲免费| 亚洲图片欧美日产| 日韩午夜影院| 亚洲精品第一页| 欧美性受xxxx狂喷水| 日韩欧美中文一区| 91久久精品无码一区二区| 色88888久久久久久影院野外| 99精品视频99| 欧美日韩国产激情| 日本少妇性生活| 亚洲一区二区三区自拍| 精品一区在线观看视频| 中文字幕一区二区在线观看| 加勒比综合在线| 91首页免费视频| 色婷婷免费视频| www.爱久久.com| 国产人成视频在线观看| 成人福利视频网站| 无码国产69精品久久久久网站 | 性欧美丰满熟妇xxxx性仙踪林| 成人黄色777网| 少妇被狂c下部羞羞漫画| 成人网在线播放| 李丽珍裸体午夜理伦片| 成人国产精品免费| 小毛片在线观看| 99久久婷婷国产综合精品| 免费看黄色片的网站| 成人av资源在线| 国产夫妻性爱视频| 2020日本不卡一区二区视频| 男男做爰猛烈叫床爽爽小说| 99久久精品国产一区| 久久久久久久无码| 久久久久久久久久久久久夜| 在线不卡av电影| 国产日韩精品久久久| 手机av在线不卡| 亚洲日本护士毛茸茸| 欧美成人片在线观看| 午夜欧美在线一二页| 日韩欧美一区二区一幕| 欧美性猛交xxxx乱大交蜜桃| 久久精品视频2| 欧美乱妇20p| 精品国产黄色片| 亚洲国产一区二区三区四区| 亚洲人妻一区二区三区| 亚洲午夜av久久乱码| 麻豆tv在线| 欧美精品久久久久久久免费观看 | 欧美性xxxxxxxxx| 中文天堂在线资源| 日韩亚洲欧美一区| 天堂a中文在线| www日韩欧美| 福利在线导航136| 欧美中文字幕在线视频| 欧美激情不卡| 精品综合在线| 久久综合国产| 国产毛片视频网站| 另类小说欧美激情| 天天躁日日躁狠狠躁av麻豆男男| 久久精品一区二区| 欧美丰满熟妇bbbbbb| 精品久久久视频| 国产又粗又猛又爽又黄的| 亚洲精品99久久久久| 成人h小游戏| 97国产精品久久| 亚洲天堂网站| 免费久久99精品国产自| 在线观看国产精品入口| 欧美 日本 亚洲| 国产麻豆欧美日韩一区| 人妻丰满熟妇av无码久久洗澡| 中文字幕一区二区三区四区| 久久夜靖品2区| 日韩午夜激情电影| 国产高清免费在线播放| 久久久久国产精品免费| 狂野欧美性猛交xxxx| 久久久久久一区| 亚洲字幕久久| 国产又大又黄又粗又爽| 99视频一区二区三区| 成熟的女同志hd| 欧美午夜电影网| 天堂在线中文字幕| 欧美黄色片在线观看| 9999精品| 亚洲精品一区二区毛豆| 欧美一级一区| 国产一卡二卡三卡四卡| 亚洲精品国产品国语在线app| 天堂网一区二区| 亚洲精品999| 55av亚洲| 国产精品视频500部| 午夜精品一区二区三区国产 | 亚洲 国产 日韩 欧美| 亚洲精品av在线| a级片在线免费| 99re视频在线| 一区二区三区在线观看免费| 麻豆一区二区三区视频| 91丨porny丨中文| 日韩在线视频免费播放| 欧美v日韩v国产v| jizz性欧美| 7777奇米亚洲综合久久| 一二三区不卡| 97人人模人人爽人人澡| 综合在线观看色| 国产又粗又猛视频| 中文字幕在线看视频国产欧美| www成人在线视频| 日韩欧美一区二区三区四区| 久久综合九色| 欧美偷拍一区二区三区| 日本韩国精品在线| 国产毛片av在线| 国产精品盗摄久久久| 日本在线电影一区二区三区| 国产男女激情视频| 欧美精彩视频一区二区三区| 波多野结衣视频网址| 国产一区二区三区日韩欧美| 天堂久久午夜av| 色狠狠久久av五月综合|| 日韩二区三区在线观看| 国产精品国产三级国产专业不| 日本高清视频一区二区| 淫片在线观看| 91色视频在线导航| 中文字幕日韩一区二区不卡| 国产精品嫩草69影院| 亚洲成人av一区二区| 亚洲欧洲综合在线| 日韩美女免费观看| 日韩夫妻性生活xx| 久久这里只精品| 亚洲三级久久久| 欧美一级视频免费| 欧美最猛黑人xxxx黑人猛叫黄| 久久综合欧美| 中文av一区二区三区| 伊人色综合久久天天人手人婷| 成人免费观看在线视频| 4438全国成人免费| 日韩欧美高清在线播放| av在线免费观看不卡| 午夜精品123| 91网在线播放| 国产成人看片| 日韩国产一区二| 久久久久久久久久网站| 亚洲国产日韩欧美在线图片 | 国产欧美日韩一级| 先锋影音av在线| 精品国产第一区二区三区观看体验| 松下纱荣子在线观看| 亚洲砖区区免费| 99免费精品视频| 亚洲综合精品国产一区二区三区| 欧美日韩国产成人在线| 香蕉久久夜色精品国产使用方法 | 男女超爽视频免费播放| 中文一区一区三区高中清不卡| www.国产精品视频| 国产精品电影网| 日韩午夜av| 人妻少妇精品一区二区三区| 亚洲欧美另类人妖| 精品一区二区三区中文字幕在线 | 欧美爱爱视频| 欧美性大战久久久久xxx|