1 of 20

Определение классов в JavaScript

2 of 20

Понятие класса

Класс представляет описание объекта, его состояния и поведения, а объект является конкретным воплощением или экземпляром класса.

В JavaScript класс – это разновидность функции.

3 of 20

Определение класса

Для определения класса используется ключевое слово class:

После слова class идет название класса, а затем в фигурных скобках определяется тело класса.

4 of 20

Создание объекта класса

После определения класса можно создать объекты класса с помощью конструктора:

class Person{}

const tom = new Person();

const bob = new Person();

Для создания объекта с помощью конструктора сначала ставится ключевое слово new. Затем идет вызов конструктора - по сути вызов функции по имени класса.

5 of 20

Поля и свойства класса

Для хранения данных или состояния объекта в классе используются поля и свойства.

class Person{

name;

age;

}

const tom = new Person();

tom.name = "Tom";

tom.age = 37;

alert(tom.name); // Tom

alert(tom.age); // 37

6 of 20

Поведение класса и его методы

Класс может иметь методы, которые определяют поведение объекта - действия, которые выполняет объект. 

class Person{

name;

age;

move(place){

alert(`Go to ${place}`);

}

eat(){

alert("Eat apples");

}

}

const tom = new Person();

tom.move("Hospital"); // Go to Hospital

tom.move("Cinema"); // Go to Cinema

tom.eat(); // Eat apples

7 of 20

Обращение к полям и методам внутри класса. Слово this

  • Если в методах класса необходимо обратиться к полям класса или к другим его методам, то в этом случае перед именем поля/свойства или метода указывается ключевое слово this, которое указывает на текущий объект.

8 of 20

Обращение к полям и методам внутри класса

class Person{

name;

age;

print(){

alert(`Name: ${this.name} Age: ${this.age}`);

}

}

const tom = new Person();

tom.name = "Tom";

tom.age = 37;

tom.print(); // Name: Tom Age: 37

const bob = new Person();

bob.name = "Bob";

bob.age = 41;

bob.print(); // Name: Bob Age: 41

9 of 20

Определение конструктора

Для создания объекта класса используется конструктор. Конструктор определяется с помощью метода с именем constructor.

class Person{

name;

age;

constructor(){

alert("Вызов конструктора");

}

print(){

alert(`Name: ${this.name} Age: ${this.age}`);

}

}

const tom = new Person(); // Вызов конструктора

const bob = new Person(); // Вызов конструктора

10 of 20

Определение конструктора

  • Цель конструктора - инициализация объекта некоторыми начальными данными:

class Person{

name;

age;

constructor(personName, personAge){

this.name = personName;

this.age = personAge;

}

print(){

alert(`Name: ${this.name} Age: ${this.age}`);

}

}

const tom = new Person("Tom", 37);

tom.print(); // Name: Tom Age: 37

const bob = new Person("Bob", 41);

bob.print(); // Name: Bob Age: 41

11 of 20

Приватные поля

  • Названия приватных полей должны начинаться символом #

class Person{

#name;

#age;

constructor(name, age){

this.#name = name;

this.#age = age;

}

print(){

alert(`Name: ${this.#name} Age: ${this.#age}`);

}

}

const tom = new Person("Tom", 37);

// tom.#name = "Sam"; // ! Ошибка - нельзя обратиться к приватному полю

// tom.#age = -45; // ! Ошибка - нельзя обратиться к приватному полю

tom.print(); // Name: Tom Age: 37

12 of 20

Приватные методы

13 of 20

Статические поля

  • Статические поля хранят состояния класса в целом, а не отдельного объекта. Перед названием статического поля ставится ключевое слово static.

14 of 20

Статические методы

Статические методы определяются для всего класса в целом. Для их определения перед названием метода ставится оператор static

15 of 20

Обращение к свойствам объекта в статическом методе

Нужно определить в методе параметр, через который в метод будет передаваться объект.

16 of 20

Наследование

  •  Наследование позволяет сократить объем кода в классах-наследниках.
  • Наследование позволяет одним классам автоматически получить функционал других классов и тем самым сократить объем кода. Для наследования одного класса от другого применяется ключевое слово extends

17 of 20

Наследование

18 of 20

Наследование класса с конструктором

19 of 20

Определение конструктора в классе-наследнике и ключевое слово super

Производный класс может определить свой конструктор. Если производный класс определяет конструктор, то в нем должен быть вызван конструктор базового класса. Для обращения в производном классе к функциональности базового класса, в том числе для обращения к конструктору базового класса, применяется ключевое слово super.

20 of 20

Определение конструктора в классе-наследнике и ключевое слово super