Что такое класс (минимум)
Урок: Что такое класс
Введение
Представь, что ты разрабатываешь сайт с интернет-магазином. У тебя есть товары: у каждого есть название, цена, описание. Потом появляются действия: добавить в корзину, изменить количество, удалить товар.
Можно хранить всё это разрозненно — в переменных и функциях. Но довольно быстро код превращается в хаос: данные лежат отдельно, логика отдельно, и становится трудно понять, что с чем связано.
И вот здесь появляется идея: объединить данные и поведение в одну структуру.
Например:
- есть «Товар» как сущность;
- у него есть свойства (название, цена);
- у него есть действия (добавить в корзину).
Такую структуру в JavaScript называют классом.
Классы помогают:
- структурировать код;
- описывать реальные объекты (страницы, кнопки, пользователи);
- писать более понятные и масштабируемые программы.
Особенно это важно в автоматизации тестирования (например, в Playwright), где мы работаем с страницами и их элементами как с объектами.
Что такое класс простыми словами
Класс — это шаблон (или чертёж), по которому создаются объекты.
Представь чертёж автомобиля:
- он описывает, какие есть детали;
- какие у машины есть характеристики;
- но сам по себе не является машиной.
Точно так же:
- класс — это описание;
- объект — это конкретный экземпляр.
Пример на JavaScript — объявление и создание объекта в одном фрагменте, чтобы код в песочнице выполнялся целиком:
class User {
constructor(name) {
this.name = name;
}
}
const user1 = new User('Анна');
console.log(user1.name);
Что здесь происходит:
class User— мы объявляем класс с именемUser;constructor— специальный метод, который вызывается при создании объекта;this.name = name— сохраняем переданное значение внутрь объекта (поле объекта слева, параметр справа);new User(...)— создаёт новый объект на основе класса;console.logпоказывает, что у экземпляра появилось свойствоname.
Свойства объекта
Свойства — это данные, которые хранит объект.
Расширим класс: два поля в конструкторе, затем создание и вывод:
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
const user1 = new User('Анна', 25);
console.log(user1.name);
console.log(user1.age);
Что важно понять:
this— это ссылка на текущий объект;- всё, что мы записываем через
this, становится частью объекта.
Несколько объектов по одному шаблону
Один класс — много независимых экземпляров:
class User {
constructor(name) {
this.name = name;
}
}
const u1 = new User('Анна');
const u2 = new User('Пётр');
console.log(u1.name, u2.name);
Зачем нужны классы
До классов в JavaScript можно было писать код через функции и объекты, но:
- трудно поддерживать структуру;
- сложно повторно использовать код;
- логика и данные часто разделены.
Классы дают:
-
Структуру Мы описываем, из чего состоит объект.
-
Повторное использование Можно создать сколько угодно объектов по одному шаблону.
-
Читаемость Код становится ближе к реальному миру:
- User
- Product
- Cart
- Page
Пример из автоматизации (подготовка к следующим урокам)
Представим страницу логина.
Без классов в тесте часто пишут прямые вызовы к page. В настоящем Playwright это асинхронно; в песочнице теории мы используем учебный мок page, который только пишет в консоль, что «было бы» вызвано:
const page = {
fill: async (selector, value) => {
console.log('fill', selector, value);
},
click: async (selector) => {
console.log('click', selector);
},
};
(async () => {
await page.fill('#login', 'user');
await page.fill('#password', '123');
await page.click('#submit');
})();
С классом (упрощённо) — страница как объект, внутри храним ссылку на page:
class LoginPage {
constructor(page) {
this.page = page;
}
}
const page = {
fill: async (s, v) => console.log('fill', s, v),
click: async (s) => console.log('click', s),
};
const loginPage = new LoginPage(page);
console.log('Страница привязана:', loginPage.page === page);
Мы описали страницу как объект.
В следующих уроках мы добавим:
- методы (действия);
- асинхронность (
async/await); - использование в тестах.
Это и есть путь к Page Object Pattern, который используется в Playwright.
Как работает создание объектов
Важно понять механику — один запуск: класс, new, проверка:
class User {
constructor(name) {
this.name = name;
}
}
const user1 = new User('Анна');
console.log('name:', user1.name);
console.log('это экземпляр User?', user1 instanceof User);
Под капотом при new происходит:
- Создаётся новый объект
- Вызывается
constructor thisуказывает на этот объект- Свойства записываются в него
- Объект возвращается в переменную
Связь с последующими уроками
Этот урок — фундамент.
Дальше мы будем постепенно развивать идею:
- Урок 2: добавим методы (поведение объектов)
- Урок 3: превратим классы в Page Object для Playwright
- Урок 4: добавим асинхронные действия
- Урок 5: научимся использовать классы в реальных тестах
То есть сейчас ты учишься: → создавать «объекты» → дальше научишься «заставлять их работать»
Итоговое понимание
Класс — это не просто синтаксис, а способ думать о коде как о наборе объектов.
Ты описываешь:
- что это за сущность;
- какие у неё есть данные;
- (в следующих уроках) какие у неё есть действия.
Главная идея урока:
Класс — это шаблон, который объединяет данные и поведение в одну логичную структуру, из которой можно создавать объекты.
Именно это позволяет:
- писать более чистый код;
- легче масштабировать проект;
- строить архитектуру тестов в Playwright.
В следующем уроке мы сделаем следующий шаг — научим наши классы что-то делать.