# 01. Classes

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

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

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

```javascript
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;
  }
}
```

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

```javascript
// 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
```
