MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

建構子

constructor(建構子)是個隨著 class 一同建立並初始化物件的特殊方法。

語法

constructor([arguments]) { ... }

敘述

一個 class 只能有一個稱為 constructor 的特殊物件。如果一個 class 出現兩次以上的 constructor,就會發生 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);
}

規範

規範 狀態 註解
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Constructor Method' in that specification.
Standard Initial definition.
ECMAScript 2017 Draft (ECMA-262)
The definition of 'Constructor Method' in that specification.
Draft  

瀏覽器相容性

功能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本支持 42.0 45 (45) ? ? ?
預設的建構子 ? 45 (45) ? ? ?
功能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本支持 No support 42.0 45.0 (45) ? ? ? 42.0
預設的建構子 ? ? 45.0 (45) ? ? ? ?

參見

文件標籤與貢獻者

 此頁面的貢獻者: iigmir
 最近更新: iigmir,