5.1 Объявление класса
С введением ECMAScript 6 (ES6) в JavaScript появилась новая структура для создания объектов и управления наследованием — ключевое слово class
. Классы предоставляют более удобный и понятный синтаксис для создания объектов и работы с прототипами.
Классы в JavaScript — это синтаксический сахар над существующей прототипной системой наследования. Они делают создание и управление объектами более понятным и структурированным.
Объявление класса
Класс в JavaScript объявляется с использованием ключевого слова class
, за которым следует имя класса. Тело класса заключено в фигурные скобки {}
.
Пример:
class Person {
// Метод класса
greet() {
console.log('Hello!');
}
}
// Создание экземпляра класса
const person = new Person();
person.greet(); // Выведет: Hello!
Выражение класса
Классы могут быть объявлены как через объявление, так и через выражение. Классовые выражения могут быть именованными или анонимными.
Пример именованного класса:
const Person = class PersonClass {
greet() {
console.log('Hello!');
}
};
const person = new Person();
person.greet(); // Выведет: Hello!
Пример анонимного класса:
const Person = class {
greet() {
console.log('Hello!');
}
};
const person = new Person();
person.greet(); // Выведет: Hello!
5.2 Поля и методы классов
Свойства классов
Свойства классов в ES6 можно объявлять только внутри конструктора. Однако в более новых версиях JavaScript (ES2022) введены поля классов, позволяющие объявлять свойства вне конструктора.
Пример использования свойств в конструкторе:
class User {
constructor(username, email) {
this.username = username;
this.email = email;
}
}
const user = new User('john_doe', 'john@example.com');
console.log(user.username); // "john_doe"
console.log(user.email); // "john@example.com"
Пример использования полей классов (ES2022):
class User {
username = 'default_username';
email = 'default@example.com';
constructor(username, email) {
this.username = username;
this.email = email;
}
}
const user = new User('john_doe', 'john@example.com');
console.log(user.username); // "john_doe"
console.log(user.email); // "john@example.com"
Объяснение:
- В первом примере свойства
username
иemail
объявляются и инициализируются внутри конструктора - Во втором примере свойства
username
иemail
объявляются вне конструктора как поля класса
Методы класса
Класс может содержать методы, которые определяются внутри тела класса. Эти методы автоматически добавляются в прототип созданных объектов.
Пример методов класса:
class Animal {
speak() {
console.log('Animal speaks');
}
eat() {
console.log('Animal eats');
}
}
const animal = new Animal();
animal.speak(); // Выведет: Animal speaks
animal.eat(); // Выведет: Animal eats
3.3 Примеры использования классов
Создание сложных объектов
Классы позволяют создавать сложные объекты с различными методами и свойствами.
Пример:
class Car {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}
startEngine() {
console.log(`${this.brand} ${this.model} engine started.`);
}
stopEngine() {
console.log(`${this.brand} ${this.model} engine stopped.`);
}
}
const myCar = new Car('Toyota', 'Camry');
myCar.startEngine(); // Выведет: Toyota Camry engine started.
myCar.stopEngine(); // Выведет: Toyota Camry engine stopped.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ