ES6 的class可以看作只是一個ES5生成實例對象的構造函數的語法糖。它參考了java語言,定義了一個類的概念,讓對象原型寫法更加清晰,對象實例化更像是一種面向對象編程。Class類可以通過extends實現繼承。它和ES5構造函數的不同點:
- 類的內部定義的所有方法,都是不可枚舉的。
2.ES6的class類必須用new命令操作,而ES5的構造函數不用new也可以執行。
3.ES6的class類不存在變量提升,必須先定義class之后才能實例化,不像ES5中可以將構造函數寫在實例化之后。
4.ES5 的繼承,實質是先創造子類的實例對象this,然后再將父類的方法添加到this上面。ES6 的繼承機制完全不同,實質是先將父類實例對象的屬性和方法,加到this上面(所以必須先調用super方法),然后再用子類的構造函數修改this。
