類別概念 - Class
- Javascript以往產生物件的方法,常見為透過物件的原型(prototype)來產生。這跟大多OOP語言由類別(class)產生物件的寫法大相逕庭。因此ES6為了加強類別的概念,增加了關鍵字:
class,新的class寫法讓javascript在物件導向的定位上更加明確。
基本上,類別的宣告和定義的組成會有類別名稱、建構式(關鍵字為
constructor)和屬於此類別的自訂方法。若要宣告屬於類別且不讓物件繼承的的靜態方法,可在方法名稱前加關鍵字static
與ES5相同之處: 類別定義完後,產生物件的方法以
new進行宣告。類別中的屬性或方法的作用對象若以this進行宣告的話,則產生的物件就會擁有這些屬性或方法,否則則為指向原型物件的屬性。所有產生的物件只共享一個原型,因此改寫原型上要相當謹慎
- 類別繼承:透過關鍵字-
extends和super實現,跟ES5的透過修改原型實現更明確與方便。繼承父類別的子類別,其擁有的屬性或方法端看父類是否有以this進行宣告

- 原生類別的繼承:原生類別大致上有-Boolean()、Number()、String()、Date()、Function()、RegExp()、Object()、Error()等。
ES5以前,這些原生類別不能被完全的繼承,例如自定義屬於Array的子類別。但在ES6能夠正常的繼承。這讓繼承原生類別的子類別除了可以自定義屬性、方法、資料結構,也繼承了原生類別的屬性跟方法。
- 取值(getter)和存值(setter):可在class內部使用關鍵字-
get和set對於某些屬性設定getter和setter,來限制某些屬性的存取行為