站長資訊網
最全最豐富的資訊網站

class是es5還是es6

class是es6新特性。在ES6中,class(類)作為對象的模板被引入,可以通過class關鍵字定義類;新的class寫法讓對象原型的寫法更加清晰、更像面向對象編程的語法,也更加通俗易懂。類(class)是ECMAScript中新的基礎性語法糖結構,雖然ES6類表面上看起來可以支持正式的面向對象編程,但實際上它背后使用的仍然是原型和構造函數的概念,讓對象原型的寫法更加清晰、

class是es5還是es6

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

class是es6新特性。在ES6中,class (類)作為對象的模板被引入,可以通過 class 關鍵字定義類。

ES6 提供了更接近傳統語言的寫法,新引入的class關鍵字具有正式定義類的能力。類(class)是ECMAScript中新的基礎性語法糖結構,雖然ECMAScript 6類表面上看起來可以支持正式的面向對象編程,但實際上它背后使用的仍然是原型和構造函數的概念,讓對象原型的寫法更加清晰、更像面向對象編程的語法。

一、class簡介

傳統的JS只有對象的概念,沒有class類的概念,因為JS是基于原型的面向對象語言,原型對象特點就是將屬性全部共享給新對象。

ES6引入了class類這個概念,通過class關鍵字可以定義類,這就是更符合我們平時所理解的面向對象的語言。

class Person{   //定義一個名為Person的類     // 構造函數,用來接受參數     constructor(x,y){         this.x = x;    //this代表的是實例對象         this.y = y;     }     todoSome(){  //這是個類的方法,不需要加function,有多個方法也不用逗號隔開         alert(this.x + "的年齡是" +this.y+"歲");     } } export default  Person;
登錄后復制

二、靜態方法和靜態屬性

靜態方法和靜態屬性,是使用static關鍵字的屬性和方法

2.1 靜態方法

static classMethod(){ 		console.log('123456') 	}
登錄后復制

  • 靜態方法不會被子類繼承,子類不能調用
  • 靜態方法中的this,指向的是類class,不是類的實例。因此靜態方法只能通過類名來調用,不能通過實例來調用

let p = new Point(); p.classMethod();  // 報錯
登錄后復制

2.2 靜態屬性

static prop = 1 ;  // 靜態屬性
登錄后復制

  • 靜態屬性不能被子類繼承,子類不能調用
  • 靜態屬性只能通過類名來調用,不能通過類的實例來調

三、class繼承extends

  • class可以用過extends關鍵字來繼承
  • ES6繼承,子類構造函數中必須使用super()。因為ES6繼承是先將父類實例對象的屬性和方法,加到this上面,然后再調用子類的構造函數修改這個this
  • 如果子類沒有定義constructor方法,super()會默認添加上
  • 子類會繼承父類的方法和屬性,但是靜態方法和屬性必須通過子類的類名來調用

import classtest from "./classtest";  //先引入父類 class Man extends classtest{     constructor(x,y){   //構造函數盡量與父類參數保持一致         super();   //利用super()關鍵字,這個必須放在子類構造函數中的第一位置         this.x = x;         this.y = y;     } } export default  Man;
登錄后復制

四、class的取值函數getter和存值函數setter

getter、setter就是給class的屬性讀值、傳值用的。

取值函數getter和存值函數setter可自定義賦值和取值行為,當一個屬性只有getter沒有setter的時候,這個屬性就是只讀屬性,不能賦值,第一次初始化也不行。

如果變量定義為私有的(定義在類的花括號外面),就可以只使用getter不使用setter。

let data=[1,2,3,4];  //放在類外面,屬于私有變量,可以只讀取 class Person{     // 構造函數     constructor(x,y){         this.x = x;         this.y = y;     }     get x(){         console.log('獲得name');         return this._name;    //get讀取屬性     }     set x(x){         console.log("設置name");           this._name=x;   //set給屬性賦值     }     get data(){         return data;   //只讀屬性,屬性返回的值只能是私有變量     }     todoSome(){         alert(this.x + "的年齡是" +this.y+"歲");     }     static dayin(){         alert("dayin");     } } export default  Person;
登錄后復制

如何使用:

 var test= new this.$myutils.classtest('haha','18');   test.x="haha3";   //改變了實例化時候的x的值   test.todoSome();  //輸出:haha3的年齡是18歲。這里就已經不是實例化時候的haha了   console.log(test.data);   //結果:打印[1,2,3,4]
登錄后復制

五、注意事項:

1、在類中定義方法時候,不可以給方法加上function關鍵字,因為JS中構造函數是用function定義的,兩個隔開。

2、所有方法不要用逗號隔開,否則會報錯。

【推薦學習:javascript高級教程】

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲精品高清国产麻豆专区| 亚洲中文久久精品无码| 国产精品无码素人福利免费| 2021精品国产综合久久| 亚洲精品无码日韩国产不卡av| 久久福利资源国产精品999| 国产成人精品午夜二三区波多野| 亚洲AV成人精品日韩一区| 国产精品538一区二区在线| 国内精品免费久久影院| 在线观看亚洲AV日韩A∨| 99视频精品国在线视频艾草| 97福利视频精品第一导航| 日韩精品无码一区二区三区 | 精品无人区无码乱码毛片国产 | 在线精品亚洲一区二区三区| 亚洲综合精品网站在线观看| WWW夜片内射视频日韩精品成人| 国产chinesehd精品酒店| 亚洲午夜精品在线| 91久久精品视频| 久久精品国产2020| 亚洲av永久无码精品天堂久久| 999国产精品999久久久久久| 色一乱一伦一图一区二区精品 | 91精品国产免费久久久久久青草| 亚洲欧洲久久精品| 精品久久久久久久无码| 国产精品专区第二| 99久久综合国产精品免费| 日韩精品国产自在久久现线拍| 中国精品18videosex性中国| 日本无码小泬粉嫩精品图| 国产在线无码精品电影网| 亚洲精品国精品久久99热一| 国产在线精品网址你懂的| 久久99国产精品久久99| 国产精品玖玖美女张开腿让男人桶爽免费看| 人妻熟妇乱又伦精品HD| 精品欧洲AV无码一区二区男男 | 久久久精品国产sm调教网站|