【相關推薦:、】
傳統的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關鍵字的屬性和方法
static classMethod(){ console.log('123456') }
let p = new Point(); p.classMethod(); // 報錯
static prop = 1 ; // 靜態屬性
import classtest from "./classtest"; //先引入父類別 class Man extends classtest{ constructor(x,y){ //建構函式儘量與父類別引數保持一致 super(); //利用super()關鍵字,這個必須放在子類建構函式中的第一位置 this.x = x; this.y = y; } } export default Man;
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、所有方法不要用逗號隔開,否則會報錯。
【相關推薦:、】
以上就是歸納整理ES6中的class類知識點的詳細內容,更多請關注TW511.COM其它相關文章!