01. Classes

В ES6 появился новый синтаксис для функций-конструкторов. Новая конструкция class Class {} представляет собой удобный «синтаксический сахар» для задания конструктора Class вместе с прототипом.

В ES6 выбрана максимально-минимальная реализация классов. Единственным значительным отличием является поддержка наследования классов, которую выполнять намного легче, чем наследование конструкторов.

Пример определения класса:

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }
  toString() {
    return `(${this.x}, ${this.y})`;
  }
}

class ColorPoint extends Point {
  constructor(x, y, color) {
    super(x, y);
    this.color = color;
  }
  toString() {
    return super.toString() + " in " + this.color;
  }
}

Пример использования класса:

// In fact, the result of a class definition is a function:
> typeof Point
'function'

> var p = new Point(25, 8);
> p.toString()
'(25, 8)'

> let cp = new ColorPoint(25, 8, 'green');

> cp.toString();
'(25, 8) in green'

> cp instanceof ColorPoint
true
> cp instanceof Point
true

Last updated