Введение в Классы

03-08-24 15:53:01


Image for the Введение в Классы

Что такое Классы?

Классы в JavaScript представляют собой шаблон для создания объектов с общими свойствами и методами. Они предоставляют более интуитивный и структурированный способ работы с объектами по сравнению с традиционными конструкторными функциями и наследованием на основе прототипов.

Классы в JavaScript — это синтаксический сахар над существующим наследованием на основе прототипов, предлагая более знакомый и чистый синтаксис для определения и расширения объектов.

Базовая структура Класса

Класс определяется с помощью ключевого слова class, за которым следует имя класса и набор фигурных скобок {}. Внутри скобок можно определить конструктор и методы.

class Animal {
// Конструктор
constructor(name, type) {
this.name = name;
this.type = type;
}

// Метод для представления животного
introduce() {
console.log(`Это ${this.type} по имени ${this.name}.`);
}

// Метод, чтобы заставить животное говорить
speak(sound) {
console.log(`${this.name} говорит ${sound}.`);
}
}

// Создание экземпляра класса Animal
const lion = new Animal('Лео', 'Лев');
lion.introduce(); // Вывод: Это Лев по имени Лео.
lion.speak('Рык'); // Вывод: Лео говорит Рык.

В приведенном выше примере мы определяем класс с именем Animal с конструктором, который инициализирует свойства name и type. Мы также определяем два метода, introduce и speak, которые предоставляют функциональность объектам, созданным из этого класса.

Метод constructor

Метод constructor — это специальный метод, который вызывается при создании нового экземпляра класса. Он используется для инициализации свойств объекта.

class Car {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}

displayInfo() {
console.log(`Автомобиль: ${this.brand} ${this.model}`);
}
}

const car = new Car('Toyota', 'Corolla');
car.displayInfo(); // Вывод: Автомобиль: Toyota Corolla

Конструктор в классе Car инициализирует свойства brand и model при создании нового объекта Car.

Добавление методов

Методы — это функции, которые принадлежат классу и могут вызываться на экземплярах этого класса. В классах JavaScript вы можете определять методы внутри тела класса без ключевого слова function.

class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}

area() {
return this.width * this.height;
}

perimeter() {
return 2 * (this.width + this.height);
}
}

const rect = new Rectangle(10, 5);
console.log(`Площадь: ${rect.area()}`); // Вывод: Площадь: 50
console.log(`Периметр: ${rect.perimeter()}`); // Вывод: Периметр: 30

В этом примере класс Rectangle имеет два метода: area и perimeter, которые вычисляют и возвращают площадь и периметр прямоугольника соответственно.

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

Статические методы определяются на самом классе, а не на экземплярах класса. Обычно они используются для утилит, связанных с классом.

class MathUtilities {
static add(a, b) {
return a + b;
}

static multiply(a, b) {
return a * b;
}
}

console.log(MathUtilities.add(2, 3)); // Вывод: 5
console.log(MathUtilities.multiply(2, 3)); // Вывод: 6

В этом примере add и multiply — статические методы, которые могут быть вызваны напрямую на классе MathUtilities без создания экземпляра.