关键字创建一个基于原型继承的新类(译者注:ES6新加入的class关键字是语法糖,本质还是函数)
可以使用class表达式定义类class expression.
Syntax 语法
class name [extends] { // class body }
Description 描述
和class表达式一样,class声明体在strict mode严格模式下运行。
Class声明不可以提升(这点和函数声明不一样)。
Examples 例子
一个类声明的例子
在下面的例子,定义了一个名为Polygon的类,然后定义了一个继承于Polygon的类 Square。注意到在构造器使用的 super(),supper()只能在构造器中使用,super函数一定要在this可以使用之前调用。
class Polygon { constructor(height, width) { this.name = 'Polygon'; this.height = height; this.width = width; } } class Square extends Polygon { constructor(length) { super(length, length); this.name = 'Square'; } }
Specifications 规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Class definitions |
Standard | Initial definition. |
ECMAScript 2017 Draft (ECMA-262) Class definitions |
Draft |
Browser compatibility 浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 42.0 | Nightly build | ? | ? | ? |
Array subclassing | 43.0 | 未实现 | ? | ? | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Basic support | 未实现 | 42.0 | Nightly build | ? | ? | ? | 42.0 |
Array subclassing | 未实现 | 43.0 | 未实现 | ? | ? | ? | 43.0 |