亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

ES6 javascript中class靜態(tài)方法、屬性與實(shí)例屬性用法示例

 更新時(shí)間:2017年10月30日 08:57:59   作者:專(zhuān)注前端30年  
這篇文章主要介紹了ES6 javascript中class靜態(tài)方法、屬性與實(shí)例屬性用法,結(jié)合實(shí)例形式分析了ES6中類(lèi)的靜態(tài)方法、靜態(tài)屬性概念、功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了ES6 javascript中class靜態(tài)方法、屬性與實(shí)例屬性用法。分享給大家供大家參考,具體如下:

類(lèi)相當(dāng)于實(shí)例的原型, 所有在類(lèi)中定義的方法, 都會(huì)被實(shí)例繼承。 如果在一個(gè)方法前, 加上static關(guān)鍵字, 就表示該方法不會(huì)被實(shí)例繼承, 而是直接通過(guò)類(lèi)來(lái)調(diào)用, 這就稱(chēng)為“ 靜態(tài)方法”。

class Foo {
  static classMethod() {
    return 'hello';
  }
}
Foo.classMethod() // 'hello'
var foo = new Foo();
foo.classMethod()
// TypeError: foo.classMethod is not a function

上面代碼中, Foo類(lèi)的classMethod方法前有static關(guān)鍵字, 表明該方法是一個(gè)靜態(tài)方法, 可以直接在Foo類(lèi)上調(diào)用( Foo.classMethod()), 而不是在Foo類(lèi)的實(shí)例上調(diào)用。 如果在實(shí)例上調(diào)用靜態(tài)方法, 會(huì)拋出一個(gè)錯(cuò)誤, 表示不存在該方法。

父類(lèi)的靜態(tài)方法, 可以被子類(lèi)繼承。

class Foo {
  static classMethod() {
    return 'hello';
  }
}
class Bar extends Foo {}
Bar.classMethod(); // 'hello'

上面代碼中, 父類(lèi)Foo有一個(gè)靜態(tài)方法, 子類(lèi)Bar可以調(diào)用這個(gè)方法。
靜態(tài)方法也是可以從super對(duì)象上調(diào)用的。

class Foo {
  static classMethod() {
    return 'hello';
  }
}
class Bar extends Foo {
  static classMethod() {
    return super.classMethod() + ', too';
  }
}
Bar.classMethod();

靜態(tài)屬性

靜態(tài)屬性指的是 Class 本身的屬性, 即Class.propname, 而不是定義在實(shí)例對(duì)象( this) 上的屬性。

class Foo {}
Foo.prop = 1;
Foo.prop // 1

上面的寫(xiě)法為Foo類(lèi)定義了一個(gè)靜態(tài)屬性prop。

目前, 只有這種寫(xiě)法可行, 因?yàn)?ES6 明確規(guī)定, Class 內(nèi)部只有靜態(tài)方法, 沒(méi)有靜態(tài)屬性。

// 以下兩種寫(xiě)法都無(wú)效
class Foo {
  // 寫(xiě)法一
  prop: 2
    // 寫(xiě)法二
  static prop: 2
}
Foo.prop // undefined

ES7 有一個(gè)靜態(tài)屬性的提案, 目前 Babel 轉(zhuǎn)碼器支持。

這個(gè)提案對(duì)實(shí)例屬性和靜態(tài)屬性, 都規(guī)定了新的寫(xiě)法。

(1) 類(lèi)的實(shí)例屬性

類(lèi)的實(shí)例屬性可以用等式, 寫(xiě)入類(lèi)的定義之中。

class MyClass {
  myProp = 42;
  constructor() {
    console.log(this.myProp); // 42
  }
}

上面代碼中, myProp就是MyClass的實(shí)例屬性。 在MyClass的實(shí)例上, 可以讀取這個(gè)屬性。

以前, 我們定義實(shí)例屬性, 只能寫(xiě)在類(lèi)的constructor方法里面。

class ReactCounter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }
}

上面代碼中, 構(gòu)造方法constructor里面, 定義了this.state屬性。
有了新的寫(xiě)法以后, 可以不在constructor方法里面定義。

class ReactCounter extends React.Component {
  state = {
    count: 0
  };
}

這種寫(xiě)法比以前更清晰。

為了可讀性的目的, 對(duì)于那些在constructor里面已經(jīng)定義的實(shí)例屬性, 新寫(xiě)法允許直接列出。

class ReactCounter extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }
  state;
}

(2) 類(lèi)的靜態(tài)屬性

類(lèi)的靜態(tài)屬性只要在上面的實(shí)例屬性寫(xiě)法前面, 加上static關(guān)鍵字就可以了。

class MyClass {
static myStaticProp = 42;
constructor() {
console.log(MyClass.myProp); // 42
}
}

同樣的, 這個(gè)新寫(xiě)法大大方便了靜態(tài)屬性的表達(dá)。

// 老寫(xiě)法
class Foo {}
Foo.prop = 1;
// 新寫(xiě)法
class Foo {
  static prop = 1;
}

上面代碼中, 老寫(xiě)法的靜態(tài)屬性定義在類(lèi)的外部。 整個(gè)類(lèi)生成以后, 再生成靜態(tài)屬性。 這樣讓人很容易忽略這個(gè)靜態(tài)屬性, 也不符合相關(guān)代碼應(yīng)該放在一起的代碼組織原則。 另外, 新寫(xiě)法是顯式聲明( declarative), 而不是賦值處理, 語(yǔ)義更好。

更多相關(guān)內(nèi)容可查看本站專(zhuān)題:《ECMAScript6(ES6)入門(mén)教程》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家基于ECMAScript的程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 《JavaScript函數(shù)式編程》讀后感

    《JavaScript函數(shù)式編程》讀后感

    這里給大家分享的是個(gè)人在最近看《JavaScript函數(shù)式編程》一書(shū)的第一章之后的一些感觸和理解,這里記錄下來(lái),有需要的小伙伴可以參考下
    2015-08-08
  • JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組

    JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組

    Array filter() 方法會(huì)跳過(guò)稀疏數(shù)組中缺少的元素,它的返回?cái)?shù)組總是稠密的。這篇文章給大家介紹了JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組的相關(guān)知識(shí),需要的朋友參考下
    2018-02-02
  • 小程序多圖列表實(shí)現(xiàn)性能優(yōu)化的方法步驟

    小程序多圖列表實(shí)現(xiàn)性能優(yōu)化的方法步驟

    這篇文章主要介紹了小程序多圖列表實(shí)現(xiàn)性能優(yōu)化的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 重學(xué) JS:為啥 await 不能用在 forEach 中詳解

    重學(xué) JS:為啥 await 不能用在 forEach 中詳解

    這篇文章主要介紹了重學(xué) JS:為啥 await 不能用在 forEach 中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript中DOM常見(jiàn)的操作匯總

    JavaScript中DOM常見(jiàn)的操作匯總

    DOM(文檔對(duì)象模型)是一種用于表示和操作HTML和XML文檔的標(biāo)準(zhǔn),在JavaScript中,可以使用DOM?API來(lái)對(duì)DOM進(jìn)行操作,下面就來(lái)看看常見(jiàn)的操作都有哪些吧
    2023-08-08
  • 獲取JavaScript異步函數(shù)的返回值

    獲取JavaScript異步函數(shù)的返回值

    本文給大家分享的是如何解決獲取JavaScript異步函數(shù)返回值的經(jīng)歷及最后的解決方法,有需要的小伙伴可以參考下
    2016-12-12
  • 詳解javascript腳本何時(shí)會(huì)被執(zhí)行

    詳解javascript腳本何時(shí)會(huì)被執(zhí)行

    這篇文章主要介紹了詳解javascript腳本何時(shí)會(huì)被執(zhí)行,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-02-02
  • 微信小程序中獲取用戶(hù)手機(jī)號(hào)授權(quán)登錄詳細(xì)步驟

    微信小程序中獲取用戶(hù)手機(jī)號(hào)授權(quán)登錄詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于微信小程序中獲取用戶(hù)手機(jī)號(hào)授權(quán)登錄的詳細(xì)步驟,在微信小程序中開(kāi)發(fā)者可以通過(guò)微信提供的API接口實(shí)現(xiàn)用戶(hù)登錄和獲取用戶(hù)的手機(jī)號(hào),需要的朋友可以參考下
    2023-07-07
  • 一段利用WSH修改和查看IP配置的代碼

    一段利用WSH修改和查看IP配置的代碼

    建議增加查詢(xún)條件,更準(zhǔn)確地修改指定網(wǎng)卡。 本人是鐵通的線(xiàn)路,這樣看比較不錯(cuò)的wsh功能呢,喜歡vbs的朋友,可以用vbs實(shí)現(xiàn),功能更強(qiáng)
    2008-05-05
  • js中易弄混淆的"位置"相關(guān)屬性詳解

    js中易弄混淆的"位置"相關(guān)屬性詳解

    js中有各種位置相關(guān)的屬性,平時(shí)用起來(lái)比較混亂,特此整理一下,下面這篇文章主要給大家介紹了關(guān)于js中易弄混淆的“位置”相關(guān)屬性的相關(guān)資料,需要的朋友可以參考下
    2022-04-04

最新評(píng)論