--- title: 建構子 slug: Web/JavaScript/Reference/Classes/constructor translation_of: Web/JavaScript/Reference/Classes/constructor ---
constructor
(建構子)是個隨著 class
一同建立並初始化物件的特殊方法。
constructor([arguments]) { ... }
一個 class 只能有一個稱為 constructor 的特殊物件。如果一個 class 出現兩次以上的 constructor
,就會發生 {{jsxref("SyntaxError")}} 錯誤。
如果不指定建構子,就會使用預設的建構子。
constructor
方法這段程式碼是從 classes sample 擷取而來。(線上範例)
class Square extends Polygon { constructor(length) { // 我們在這裡呼叫了 class 的建構子提供多邊形的長寬值 super(length, length); // 注意:在 derived class 中,super() 必須在使用 this 以前被呼叫。不這樣的話會發生錯誤。 this.name = 'Square'; } get area() { return this.height * this.width; } set area(value) { this.area = value; } }
如上文所說:如果不指定建構子,就會使用預設的建構子。對 base classes 而言,預設的建構子長得像這樣:
constructor() {}
對 derived class 而言,預設的建構子長得像這樣:
constructor(...args) { super(...args); }
規範 | 狀態 | 註解 |
---|---|---|
{{SpecName('ES2015', '#sec-static-semantics-constructormethod', 'Constructor Method')}} | {{Spec2('ES2015')}} | Initial definition. |
{{SpecName('ESDraft', '#sec-static-semantics-constructormethod', 'Constructor Method')}} | {{Spec2('ESDraft')}} |
{{CompatibilityTable}}
功能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
基本支援 | {{CompatChrome(42.0)}} | {{CompatGeckoDesktop(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
預設的建構子 | {{CompatUnknown}} | {{CompatGeckoDesktop(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
功能 | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
基本支援 | {{CompatNo}} | {{CompatChrome(42.0)}} | {{CompatGeckoMobile(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(42.0)}} |
預設的建構子 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile(45)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |