JavaScript классы - основы, наследование и приватные свойства
Преимущества использования классов в программировании, вместо функции конструктор в JavaScript:
- Организация кода: Использование классов способствует большей организации кода, позволяя группировать свойства и методы, относящиеся к одному объекту в один модуль.
- Облегчение создания объектов: Классы предоставляют удобный способ создания новых объектов. Конструктор класса определяет, какие свойства имеет объект и устанавливает их по умолчанию при создании нового экземпляра.
- Наследование и расширение: Классы поддерживают наследование, что позволяет создавать новые классы на основе существующих. Это уменьшает дублирование кода и позволяет использовать свойства и методы родительского класса.
- Понятность: Использование классов делает код более понятным разработчикам, поскольку они могут легко определить структуру объектов и их возможности.
- Модульность: Классы способствуют модульности, позволяющей структурировать программу по концепции объектно-ориентированного программирования (ООП).
Повторение прототипов и основы классов в JavaScript
JavaScript использует прототипное наследование, благодаря чему каждый объект может наследовать свойства и методы другого объекта. Прототипы - сильная часть языка, однако не всегда понятная. В базовом варианте это выглядит так:
/** * Функция-конструктор для создания объекта Person */ function Person(name, age) { this.name = name; this.age = age; } // Добавление метода greet в прототип объекта Person Person.prototype.greet = function() { console.log(`Привет, меня зовут ${this.name} и мне ${this.age} лет.`); }; // Создание объекта с помощью функции-конструктора const person1 = new Person("Иван", 25); person1.greet(); // "Привет, меня зовут Иван и мне 25 лет."
В этом примере функция Person выступает как конструктор, который создаёт новый объект со свойствами name и age. Метод greet добавляется в прототип объекта, чтобы все объекты, созданные с помощью конструктора Person, могли использовать этот метод.
Однако в современном JavaScript существуют классы, которые предоставляют более удобный и понятный способ создания объектов. Например, определим класс Person, который будет иметь свойства "имя" и "возраст", а также метод "поприветствовать":
class Person { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log(`Привет, меня зовут ${this.name} и мне ${this.age} лет.`); } } // Создание объекта с помощью класса const person1 = new Person("Иван", 25); person1.greet(); // "Привет, меня зовут Иван и мне 25 лет."
Приватные свойства в JavaScript: # и _
В современном JavaScript для настоящей приватности используют символ #:
class Person { #salary; constructor(name, salary) { this.name = name; this.#salary = salary; } getSalary() { return this.#salary; } }
#salary - полностью приватное свойство, к нему нельзя обратиться извне.
Ранее для "приватности" использовали подчёркивание, но это только соглашение:
class Person { constructor(name, salary) { this.name = name; this._salary = salary; } }
_salary - обычное свойство, к нему есть доступ снаружи.
Вывод:
- # - настоящая приватность (ES2022+).
- _ - только соглашение, не защищает свойство.
Читайте также: JavaScript: функции-конструкторы, создание объектов и прототипы, Три свойства ООП Объектно-ориентированное программирование
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах