This translation is incomplete. Please help translate this article from English.
Это экспериментальная технология, часть предложения Harmony (ECMAScript 6).
Поскольку спецификация этой технологии ещё не стабилизировалась, проверьте таблицу совместимости её использования в различных браузерах. Также обратите внимание, что синтаксис и поведение экспериментальной технологии могут быть изменены в будущих версиях браузеров в соответствии с изменениями в спецификации.
Draft
This page is not complete.
Классы в JavaScript появятся в ECMAScript 6 и будут представлять собой синтаксический сахар существующих в языке прототипных наследований. Синтаксис класса не вводит новую объектно-ориентированную модель наследования. Классы в JS предоставляют гораздо более простой и понятный способ создания объектов.
Определение классов
На самом деле классы - это функции. Поэтому так же как вы определяете функции (function expressions и function declarations), вы можете определять и классы с помощью:
Class declarations
Первый способ определения класса - class declaration. Для этого необходимо воспользоваться ключевым словом class и указать имя класса (в примере - "Polygon").
class Polygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
Подъем (hoisting)
Разница между function declarations и class declarations в том, что function declarations совершает подъем (hoisted), в то время как class declarations - нет. Поэтому вначале необходимо объявить ваш класс и только затем работать с ним. Иначе, код вроде следующего не сработает и выдаст ошибку ReferenceError:
var p = new Polygon(); // ReferenceError
class Polygon {}
Class expressions
Второй способ определения класса - class expression. С помощью него можно создавать именованные и безымянные классы. В первом случае имя класса находится в локальной области видимости класса.
// безымянный
var Polygon = class {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
// именованный
var Polygon = class Porygon {
constructor(height, width) {
this.height = height;
this.width = width;
}
};
Тело класса и метод определения
Тело класса - это часть кода, находящаяся в фигурных скобках ({ }). Здесь вы можете объявлять члены класса, такие как методы и конструкторы.
Strict mode
Тела class declarations и class expressions выполненные в strict mode.
Constructor
Метод конструктор - специальный метод, необходимый для создания и инициализации объектов с помощью класса. В классе может быть только один "конструктор". Ошибка SyntaxError появится в том случае, если класс будет содержать более одного метода конструктора.
Конструктор может использовать ключевое слово "super" для вызова конструктора родительского класса.
Static methods
Sub classing with extends
Sub classing built-in objects
Super class calls with super
Examples
Specifications
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Class definitions' в этой спецификации. |
Стандарт | Initial definition. |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | 42.0 | Available in the Nightly channel only (since February 2015) | ? | ? | ? |
| Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|
| Basic support | Нет | Available in the Nightly channel only (since February 2015) | ? | ? | ? | 42.0 |