JavaRush /Курсы /Модуль 1: Web Core /Cинтаксис классов

Cинтаксис классов

Модуль 1: Web Core
20 уровень , 4 лекция
Открыта

5.1 Объявление класса

С введением ECMAScript 6 (ES6) в JavaScript появилась новая структура для создания объектов и управления наследованием — ключевое слово class. Классы предоставляют более удобный и понятный синтаксис для создания объектов и работы с прототипами.

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

Объявление класса

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

Пример:

JavaScript
    
      class Person {
        // Метод класса
        greet() {
          console.log('Hello!');
        }
      }

      // Создание экземпляра класса
      const person = new Person();
      person.greet(); // Выведет: Hello!
    
  

Выражение класса

Классы могут быть объявлены как через объявление, так и через выражение. Классовые выражения могут быть именованными или анонимными.

Пример именованного класса:

JavaScript
    
      const Person = class PersonClass {
        greet() {
          console.log('Hello!');
        }
      };

      const person = new Person();
      person.greet(); // Выведет: Hello!
    
  

Пример анонимного класса:

JavaScript
    
      const Person = class {
        greet() {
          console.log('Hello!');
        }
      };

      const person = new Person();
      person.greet(); // Выведет: Hello!
    
  

5.2 Поля и методы классов

Свойства классов

Свойства классов в ES6 можно объявлять только внутри конструктора. Однако в более новых версиях JavaScript (ES2022) введены поля классов, позволяющие объявлять свойства вне конструктора.

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

JavaScript
    
      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):

JavaScript
    
      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 объявляются вне конструктора как поля класса

Методы класса

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

Пример методов класса:

JavaScript
    
      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 Примеры использования классов

Создание сложных объектов

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

Пример:

JavaScript
    
      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.
    
  
1
Задача
Модуль 1: Web Core, 20 уровень, 4 лекция
Недоступна
Класс Person
Класс Person
1
Задача
Модуль 1: Web Core, 20 уровень, 4 лекция
Недоступна
Класс User
Класс User
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Андрей Уровень 50
30 мая 2025
Пример использования полей классов (ES2022): class User { username = 'default_username'; email = 'default@example.com'; constructor(username, email) { if(username) this.username = username; if(email) this.email = email; } } так работает.
RayCowperwood Уровень 48
4 июня 2025
Можно заменить ifв, для лучшего чтения, с использованием логического ИЛИ

this.username = username  || this.username;
this.email = email || this.email;