1.類的由來
JavaScript 語言中,生成實例對象的傳統方法是通過構造函數,但是這種寫法跟傳統的面向對象語言差異很大,容易讓不熟悉這門語言的程序員感到困惑,下面有一個例子
ES6提供了更接近傳統語言的寫法,引入了 class(類)這個概念,作為對象的模板,通過class關鍵字,可以定義類,這種寫法只是讓對象原型的寫法更加清晰,更像面向對象編程的語法,下邊這個例子是上邊代碼的升級版,用ES6的 class 改寫
使用的時候,也是直接對類使用 new 命令,跟構造函數的用法完全一致
構造函數的 prototype 屬性,在 ES6 的“類”上面繼續存在,事實上,類的所有方法都定義在類的prototype睡醒上面
2.class 定義類的
(1)在 class 類上添加的屬性都是在原型 prototype 上添加的
(2)new 實例的時候其實就是調用構造函數這個方法
(3)類的本質其實就是一個函數
(4)類中的this 指向實例對象
(5)添加的私有屬性都在構造函數中添加
(6)每個構造方法都會默認返回實例對象this,如果人為改變 return 返回值,返回基本數據類型 字符串、數字、布爾等,不會改變return this 的值;如果返回應引用數據類型 對象 數組,那么return this 就會失效,返回你返回的結果
(7)靜態方法,在方法名前面加上 static關鍵字
那么這個方法,就變成了類的私有方法 就得用 類.方法()
(8)extents 繼承
子類繼承父類 使用extents 關鍵字
代碼塊里需要使用 super 關鍵字
super 既可以充當函數,也可以充當對象
1) 充當函數時,只能在子類的構造函數中使用,且必須放在第一行調用。指向父類的構造函數,只有super調用之后,子類才可以使用 this 關鍵字,指向子類的實例對象
2)充當對象時,放在普通函數中,super 指向父類的原型 prototype
3)放在靜態方法中 super 執行當前父類本身