es6中class類靜態(tài)方法,靜態(tài)屬性,實例屬性,實例方法的理解與應(yīng)用分析
本文實例講述了es6中class類靜態(tài)方法,靜態(tài)屬性,實例屬性,實例方法。分享給大家供大家參考,具體如下:
es6新增了一種定義對象實例的方法,使用class關(guān)鍵字定義類,與class相關(guān)的知識點(diǎn)也逐步火熱起來,但是部分理解起來相對抽象,簡單對class相關(guān)的知識點(diǎn)進(jìn)行總結(jié),更好的使用class。對于基本概念,請參見阮一峰老師的es6入門教程。本文主要總結(jié)class靜態(tài)相關(guān)。
關(guān)于類有兩個概念,1,類自身,;2,類的實例對象
總的來說:靜態(tài)的是指向類自身,而不是指向?qū)嵗龑ο?,主要是歸屬不同,這是靜態(tài)屬性的核心。
難點(diǎn)1:靜態(tài)方法的理解
class Foo {
static classMethod() {
return 'hello';
}
}
靜態(tài)方法使用:在方法前加上static關(guān)鍵字
為什么使用靜態(tài)方法:阻止方法被實例繼承,類的內(nèi)部相當(dāng)于實例的原型,所有在類中直接定義的方法相當(dāng)于在原型上定義方法,都會被類的實例繼承,但是使用static靜態(tài)方法定義的不會被實例繼承,而且可以被實例直接應(yīng)用Foo.classMethod(),此時寫成new Foo.classMethod()會提示不存在此方法
靜態(tài)方法中this指向:this指向類而不是類的實例
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)屬性的理解,以及和實例屬性的區(qū)別
理解了靜態(tài)的本質(zhì)就知道靜態(tài)屬性是class類自身的屬性
相對的實例屬性是指類的實例的屬性,調(diào)用時使用 new Foo().'屬性名'
定義實例屬性的方法:2種
類的實例屬性可以用等式,寫入類的定義之中
1,在類中定義
class MyClass {
myProp = 42;
constructor() {
console.log(this.myProp); // 42
}
}
//上面代碼中,myProp就是MyClass的實例屬性。在MyClass的實例上,可以讀取這個屬性。
2,在constructor中定義(react中經(jīng)典寫法)
class ReactCounter extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0
};
}
}
//等價于
class ReactCounter extends React.Component {
state = {
count: 0
};
}
定義靜態(tài)方法,
1,就和普通的Object添加屬性一樣,object.a = a;(目前唯一一種方法)
缺點(diǎn):老寫法的靜態(tài)屬性定義在類的外部。整個類生成以后,再生成靜態(tài)屬性。容易忽略
2,靜態(tài)屬性的提案: 相對于實例方法定義,在定義實例方法的前面加上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測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
SOSO地圖API使用(一)在地圖上畫圓實現(xiàn)思路與代碼
最近在做SOSO地圖相關(guān)開發(fā),遇到相關(guān)畫圓知識,特此簡單記錄下來,接下來講解如何在在地圖上畫圓,感興趣的朋友可以了解下2013-01-01
JavaScript實現(xiàn)函數(shù)緩存及應(yīng)用場景
在JavaScript中,可以通過函數(shù)緩存來提高函數(shù)的執(zhí)行效率,本文就來介紹一下JavaScript實現(xiàn)函數(shù)緩存及應(yīng)用場景,具有一定的參考價值,感興趣的可以了解一下2024-01-01
js this函數(shù)調(diào)用無需再次抓獲id,name或標(biāo)簽名
this就是你當(dāng)前要執(zhí)行的js所抓獲的節(jié)點(diǎn),這樣在js里就可以不用document.getElement之類的寫法來抓獲id,name或標(biāo)簽名,具體示例如下2014-03-03
wangEditor編輯器失去焦點(diǎn)后仍然可以在原位置插入圖片分析
本文給大家?guī)淼氖且豢罘浅2诲e的富文本編輯器WangEditor,他最大的特點(diǎn)是它在ie6,7,8上都可以做到失去焦點(diǎn)后仍然可以在原位置插入圖片,而且代碼量很少,下面我們就來分析下他是如何實現(xiàn)的呢2015-05-05

