最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

上面代碼中, 父類Foo有一個(gè)靜態(tà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

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

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

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

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

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

(1) 類的實(shí)例屬性

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

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

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

以前, 我們定義實(shí)例屬性, 只能寫在類的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
  };
}

這種寫法比以前更清晰。

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

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

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

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

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

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

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

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

更多相關(guān)內(nèi)容可查看本站專題:《ECMAScript6(ES6)入門教程》、《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)文章

  • Postman的FormData傳參的使用示例詳解

    Postman的FormData傳參的使用示例詳解

    今年上半年因?yàn)樽霎呍O(shè)的原因,有自己接觸到后端,也是用過(guò)了postman去測(cè)試接口,看到了postman那邊的參數(shù)形式,一直對(duì)這個(gè)formData有想法,今天通過(guò)本文給大家介紹Postman的FormData傳參的使用,感興趣的朋友一起看看吧
    2023-10-10
  • jquery中click等事件綁定及移除的幾種方法小結(jié)

    jquery中click等事件綁定及移除的幾種方法小結(jié)

    這篇文章主要介紹了jquery中綁定事件與解綁事件是常用到的寫法,這里總結(jié)了幾種常見的綁定事件與解綁事件的方法,需要的朋友可以參考下
    2023-05-05
  • JS正則RegExp.test()使用注意事項(xiàng)(不具有重復(fù)性)

    JS正則RegExp.test()使用注意事項(xiàng)(不具有重復(fù)性)

    這篇文章主要介紹了JS正則RegExp.test()使用注意事項(xiàng),結(jié)合實(shí)例形式分析了RegExp.test()方法的功能與用法,以及針對(duì)不能重復(fù)調(diào)用的解決方法,需要的朋友可以參考下
    2016-12-12
  • 基于Turn.js 實(shí)現(xiàn)翻書效果實(shí)例解析

    基于Turn.js 實(shí)現(xiàn)翻書效果實(shí)例解析

    最近項(xiàng)目經(jīng)理我個(gè)項(xiàng)目練練手,其項(xiàng)目需求是要實(shí)現(xiàn)翻書效果,看到這個(gè)需求后,我真是懵了,這咋整,我可是java出身的啊,這個(gè)問(wèn)題真是難住我了,后來(lái)有同事的指導(dǎo),問(wèn)題順利解決,下面小編把學(xué)習(xí)心得分享,感興趣的朋友可以參考下
    2016-06-06
  • 微信小程序 行的刪除和增加操作實(shí)現(xiàn)詳解

    微信小程序 行的刪除和增加操作實(shí)現(xiàn)詳解

    這篇文章主要介紹了微信小程序 行的刪除和增加操作實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • BootStrap Validator 版本差異問(wèn)題導(dǎo)致的submitHandler失效問(wèn)題的解決方法

    BootStrap Validator 版本差異問(wèn)題導(dǎo)致的submitHandler失效問(wèn)題的解決方法

    這篇文章主要介紹了BootStrap Validator 版本差異問(wèn)題導(dǎo)致的submitHandler失效問(wèn)題的解決方法,下面通過(guò)本文給大家詳細(xì)說(shuō)明一下,需要的朋友可以參考下
    2016-12-12
  • 非常全面的12種js數(shù)組去重的方法

    非常全面的12種js數(shù)組去重的方法

    數(shù)組的去重方法,其實(shí)無(wú)論實(shí)在實(shí)際項(xiàng)目還是在面試中都會(huì)有用到的,下面這篇文章主要給大家介紹了非常全面的12種js數(shù)組去重的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解JS如何進(jìn)行變量解構(gòu)

    詳解JS如何進(jìn)行變量解構(gòu)

    JavaScript中,可以使用解構(gòu)賦值的方式來(lái)對(duì)數(shù)組或者對(duì)象進(jìn)行變量解構(gòu),下面小編就來(lái)為大家詳細(xì)介紹一下JavaScript實(shí)現(xiàn)數(shù)組或者對(duì)象解構(gòu)的方法吧
    2023-11-11
  • 使用javascript提交form表單方法匯總

    使用javascript提交form表單方法匯總

    這篇文章主要介紹了通過(guò)a標(biāo)簽的超鏈接提交form表單方法匯總,十分的全面細(xì)致,也很實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問(wèn)題解決

    微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問(wèn)題解決

    這篇文章主要介紹了微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

左云县| 利津县| 霞浦县| 云安县| 任丘市| 定州市| 梨树县| 高阳县| 屏东县| 岚皋县| 山阳县| 马尔康县| 绿春县| 宜章县| 赤城县| 芒康县| 萨迦县| 沈丘县| 石台县| 阿拉善右旗| 蒲城县| 安西县| 大英县| 大宁县| 石棉县| 方正县| 江安县| 绥中县| 海口市| 松阳县| 家居| 临桂县| 手游| 高青县| 麻栗坡县| 青浦区| 株洲市| 溧阳市| 义乌市| 丽江市| 斗六市|