We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

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 Latest Draft (ECMA-262)
The definition of 'Constructor Method' in that specification.
Draft  

瀏覽器相容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

功能 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,