### class:類
1. ES6類相當于ES5的語法糖
2. 使用class關鍵字聲明類:class Fn() {} || const Fn = class {}
3. 類中的所有方法之間不需要加入逗號,在函數前也不需要加入function關鍵字
4. function fn(x, y) { this.x = x } === class fn { constructor(x, y){ this.x = x } }
Point.prototype = {
_initProperty = 1; 實例屬性的另一種寫法
static _initProperty = 1; 類的靜態屬性(目前還只是提案,無法使用,可在類的外面定義:Point._initProperty = 1)
constructor() {
this._initProperty = 1; 實例屬性
}
toString() {}
toValue() {}
get y() {}
set y() {}
static classMethod() {} 類的靜態方法
};
5. 向類中一次添加多個方法
Object.assign(Point.prototype, {
toString(){},
toValue(){}
});
6. constructor方法是類中默認的方法,在new生成對象時自動調用,默認返回實例對象( this ),當然也可以更改指向
7. 類只能通過new進行創建
8. 類的實例屬性定義在自身上,也就是this上,否則就是原型對象上
9. 類中也擁有get set函數,可以攔截自定義屬性的設置返回行為
10. 類的立即執行
let person = new class { constructor(name) { this.name = name } }( 'Jack' )
11. 類和模塊內部默認就是嚴格模式,不需要 'use strict' 聲明
12. 類不存在變量提升,與ES5函數不同
13. static關鍵字定義類的靜態方法,不被實例所繼承,類中的this指向類,不指向實例對象
14. 父類的靜態方法,也可被子類繼承
15. new.targer為新增的屬性,指向類本身,如果是子類繼承,則指向子類