欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

類相當(dāng)于實例的原型, 所有在類中定義的方法, 都會被實例繼承。 如果在一個方法前, 加上static關(guān)鍵字, 就表示該方法不會被實例繼承, 而是直接通過類來調(diào)用, 這就稱為“ 靜態(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類的classMethod方法前有static關(guān)鍵字, 表明該方法是一個靜態(tài)方法, 可以直接在Foo類上調(diào)用( Foo.classMethod()), 而不是在Foo類的實例上調(diào)用。 如果在實例上調(diào)用靜態(tài)方法, 會拋出一個錯誤, 表示不存在該方法。

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

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

上面代碼中, 父類Foo有一個靜態(tài)方法, 子類Bar可以調(diào)用這個方法。
靜態(tài)方法也是可以從super對象上調(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, 而不是定義在實例對象( this) 上的屬性。

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

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

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

// 以下兩種寫法都無效
class Foo {
  // 寫法一
  prop: 2
    // 寫法二
  static prop: 2
}
Foo.prop // undefined

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

這個提案對實例屬性和靜態(tài)屬性, 都規(guī)定了新的寫法。

(1) 類的實例屬性

類的實例屬性可以用等式, 寫入類的定義之中。

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

上面代碼中, myProp就是MyClass的實例屬性。 在MyClass的實例上, 可以讀取這個屬性。

以前, 我們定義實例屬性, 只能寫在類的constructor方法里面。

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

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

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

這種寫法比以前更清晰。

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

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

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

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

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

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

// 老寫法
class Foo {}
Foo.prop = 1;
// 新寫法
class Foo {
  static prop = 1;
}

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    JavaScript中DOM常見的操作匯總

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

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

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

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

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

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

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

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

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

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

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

最新評論