es6中class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法的理解與應(yīng)用分析
本文實(shí)例講述了es6中class類靜態(tài)方法,靜態(tài)屬性,實(shí)例屬性,實(shí)例方法。分享給大家供大家參考,具體如下:
es6新增了一種定義對(duì)象實(shí)例的方法,使用class關(guān)鍵字定義類,與class相關(guān)的知識(shí)點(diǎn)也逐步火熱起來,但是部分理解起來相對(duì)抽象,簡(jiǎn)單對(duì)class相關(guān)的知識(shí)點(diǎn)進(jìn)行總結(jié),更好的使用class。對(duì)于基本概念,請(qǐng)參見阮一峰老師的es6入門教程。本文主要總結(jié)class靜態(tài)相關(guān)。
關(guān)于類有兩個(gè)概念,1,類自身,;2,類的實(shí)例對(duì)象
總的來說:靜態(tài)的是指向類自身,而不是指向?qū)嵗龑?duì)象,主要是歸屬不同,這是靜態(tài)屬性的核心。
難點(diǎn)1:靜態(tài)方法的理解
class Foo { static classMethod() { return 'hello'; } }
靜態(tài)方法使用:在方法前加上static關(guān)鍵字
為什么使用靜態(tài)方法:阻止方法被實(shí)例繼承,類的內(nèi)部相當(dāng)于實(shí)例的原型,所有在類中直接定義的方法相當(dāng)于在原型上定義方法,都會(huì)被類的實(shí)例繼承,但是使用static靜態(tài)方法定義的不會(huì)被實(shí)例繼承,而且可以被實(shí)例直接應(yīng)用Foo.classMethod()
,此時(shí)寫成new Foo.classMethod()
會(huì)提示不存在此方法
靜態(tài)方法中this指向:this指向類而不是類的實(shí)例
class Foo { static bar () { this.baz(); } static baz () { console.log('hello'); } baz () { console.log('world'); } } Foo.bar() // hello
繼承相關(guān):靜態(tài)方法可以被子類繼承,也可以被super調(diào)用
難點(diǎn)2:靜態(tài)屬性的理解,以及和實(shí)例屬性的區(qū)別
理解了靜態(tài)的本質(zhì)就知道靜態(tài)屬性是class類自身的屬性
相對(duì)的實(shí)例屬性是指類的實(shí)例的屬性,調(diào)用時(shí)使用 new Foo().'屬性名'
定義實(shí)例屬性的方法:2種
類的實(shí)例屬性可以用等式,寫入類的定義之中
1,在類中定義
class MyClass { myProp = 42; constructor() { console.log(this.myProp); // 42 } } //上面代碼中,myProp就是MyClass的實(shí)例屬性。在MyClass的實(shí)例上,可以讀取這個(gè)屬性。
2,在constructor中定義(react中經(jīng)典寫法)
class ReactCounter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } }
//等價(jià)于 class ReactCounter extends React.Component { state = { count: 0 }; }
定義靜態(tài)方法,
1,就和普通的Object添加屬性一樣,object.a = a;(目前唯一一種方法)
缺點(diǎn):老寫法的靜態(tài)屬性定義在類的外部。整個(gè)類生成以后,再生成靜態(tài)屬性。容易忽略
2,靜態(tài)屬性的提案: 相對(duì)于實(shí)例方法定義,在定義實(shí)例方法的前面加上static關(guān)鍵字,該方法未發(fā)布
class MyClass { static myStaticProp = 42; constructor() { console.log(MyClass.myStaticProp); // 42 } }
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- ES6 javascript中class類的get與set用法實(shí)例分析
- ES6新特性之類(Class)和繼承(Extends)相關(guān)概念與用法分析
- ES6 javascript中Class類繼承用法實(shí)例詳解
- ES6中Class類的靜態(tài)方法實(shí)例小結(jié)
- ES6中class類用法實(shí)例淺析
- JavaScript ES6 Class類實(shí)現(xiàn)原理詳解
- ES6 class類鏈?zhǔn)嚼^承,實(shí)例化及react super(props)原理詳解
- es5 類與es6中class的區(qū)別小結(jié)
- ES6中的類(Class)示例詳解
相關(guān)文章
JavaScript必備的斷點(diǎn)調(diào)試技巧總結(jié)(推薦)
打斷點(diǎn)操作很簡(jiǎn)單,核心的問題在于,斷點(diǎn)怎么打才能夠排查出代碼的問題所在呢?下面這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript必備的斷點(diǎn)調(diào)試技巧,需要的朋友可以參考下2021-09-09JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法實(shí)例分析
這篇文章主要介紹了JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法,結(jié)合實(shí)例形式分析了JS數(shù)組創(chuàng)建、賦值、連接、翻轉(zhuǎn),json對(duì)象定義、讀取,eval()函數(shù)的功能、使用等,需要的朋友可以參考下2019-02-02web網(wǎng)頁按比例顯示圖片實(shí)現(xiàn)原理及js代碼
由于上傳圖片的大小是未知的,在顯示成縮略圖的時(shí)候必須進(jìn)行按比例的縮放才能美觀地顯示,本文將為大家簡(jiǎn)單的介紹一種比較不錯(cuò)的方法,有此需求的朋友可以參考下2013-08-08bootstrap fileinput插件實(shí)現(xiàn)預(yù)覽上傳照片功能
這篇文章主要介紹了bootstrap fileinput插件實(shí)現(xiàn)預(yù)覽上傳照片功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01對(duì)TypeScript庫進(jìn)行單元測(cè)試的方法
這篇文章主要介紹了對(duì)TypeScript庫進(jìn)行單元測(cè)試的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07購物車前端開發(fā)(jQuery和bootstrap3)
針對(duì)購物車的操作,進(jìn)行產(chǎn)品數(shù)量的增加減少,刪除購物車中產(chǎn)品項(xiàng),本文使用JQuery1.11和bootstrap3進(jìn)行購物車開發(fā),感興趣的小伙伴們2016-08-08