Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

构造方法

这篇文章需要文法复核。如何帮忙。

该新特性属于 ECMAScript 2015(ES6)规范,在使用时请注意浏览器兼容性。

简介

当用class 创建对象时,constructor是一个用来创建和初始化的对象的特殊方法

语法

constructor([arguments]) { ... }

描述

一个 class 中只能有一个指定的 ”constructor“ (构造)方法。如果 class 定义的时候包含多个构造方法,程序将会抛出 SyntaxError 错误。

在构造方法中可以使用 super 关键字来调用父类的构造方法。

如果没有显式指定构造方法,则会添加默认的constructor方法。

实例

使用构造方法

以下代码来自 类的实例 (在线 demo).

class Square extends Polygon {
  constructor(length) {
    // 在这里调用父类的"length",赋值给矩形的"width"和"height"。
    super(length, length);
    // 注意:子类必须在constructor方法中调用super方法,否则新建实例时会报错。
    this.name = 'Square';
  }

  get area() {
    return this.height * this.width;
  }

  set area(value) {
    this.area = value;
  } 
}

默认构造方法

如果没有显式定义,会默认添加一个空的constructor方法。对于基类"Base classes",默认构造方法如下:

constructor() {}

对于派生类"Derived classes" ,默认构造方法如下:

constructor(...args) {
  super(...args);
}

规格

规格 状态 注释
ECMAScript 2015 (6th Edition, ECMA-262)
Constructor Method
Standard 初始定义.
ECMAScript 2017 Draft (ECMA-262)
Constructor Method
Draft  

浏览器兼容

特性 Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 42.0 45 (45) ? ? ?
Default constructors ? 45 (45) ? ? ?
特性 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 42.0 45.0 (45) ? ? ? 42.0
Default constructors ? ? 45.0 (45) ? ? ? ?

 

参阅

文档标签和贡献者

 此页面的贡献者: destinyCherry, MarxJiao, chaooo, Lellansin
 最后编辑者: destinyCherry,