03-08-24 15:53:01
Классы в 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 — это специальный метод, который вызывается при создании нового экземпляра класса. Он используется для инициализации свойств объекта.
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 без создания экземпляра.