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.

extends

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

extends关键词被用在类声明或者类表达式以创建一个其他类的子类。

Syntax

class ChildClass extends ParentClass { ... }

描述

extends关键词用来集成一个普通类以及内建对象。

扩展的.prototype必须是一个Object 或者 null

示例

使用extends

第一个例子是根据名为Polygon类创建一个名为Square的类。 你可以从实战演示看到这个例子。

class Square extends Polygon {
  constructor(length) {
    // 这里把length传参给父类的构造方法
    // 作为父类Polygon的宽和高
    super(length, length);
    // 备注:在衍生类中使用this前必须先调用super()方法
    // 忽视这一点将会导致一个引用错误
    this.name = 'Square';
  }

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

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

使用extends扩展内建对象

这个示例继承了Date对象。 你可以从实战演示看到这个例子。

class myDate extends Date {
  constructor() {|
    super();
  }

  getFormattedDate() {
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    return this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear();
  }
}

继承null

可以像扩展普通类一样扩展null,但是新对象的原型将不会继承 Object.prototype.

class nullExtends extends null {
  constructor() {}
}

Object.getPrototypeOf(nullExtends); // Function.prototype
Object.getPrototypeOf(nullExtends.prototype) // null

详述

详述 状态 注释
ECMAScript 2015 (6th Edition, ECMA-262)
extends
Standard 最初的定义

浏览器兼容性

特性 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本支持 42.0 仅在夜间频道(Nightly channel)可用自2015年3月 ? ? ?
数组的子类 43.0 未实现 ? ? ?
特性 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本支持 未实现 42.0 仅在夜间频道(Nightly channel)可用自2015年3月 ? ? ? 42.0
数组的子类 未实现 43.0 未实现 ? ? ? 43.0

扩展阅读

文档标签和贡献者

 此页面的贡献者: ziyunfei, TinyJiang, pixiu
 最后编辑者: ziyunfei,