From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/classes/constructor/index.html | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 files/zh-tw/web/javascript/reference/classes/constructor/index.html (limited to 'files/zh-tw/web/javascript/reference/classes/constructor/index.html') diff --git a/files/zh-tw/web/javascript/reference/classes/constructor/index.html b/files/zh-tw/web/javascript/reference/classes/constructor/index.html new file mode 100644 index 0000000000..8da81e9b71 --- /dev/null +++ b/files/zh-tw/web/javascript/reference/classes/constructor/index.html @@ -0,0 +1,157 @@ +--- +title: 建構子 +slug: Web/JavaScript/Reference/Classes/constructor +translation_of: Web/JavaScript/Reference/Classes/constructor +--- +
{{jsSidebar("Classes")}}
+ +

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}}

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
功能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本支援{{CompatChrome(42.0)}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
預設的建構子{{CompatUnknown}}{{CompatGeckoDesktop(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
功能AndroidAndroid WebviewFirefox Mobile (Gecko)IE MobileOpera MobileSafari MobileChrome for Android
基本支援{{CompatNo}}{{CompatChrome(42.0)}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatChrome(42.0)}}
預設的建構子{{CompatUnknown}}{{CompatUnknown}}{{CompatGeckoMobile(45)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

參見

+ + -- cgit v1.2.3-54-g00ecf