Классы и объекты

Объектно-ориентированное программирование (ООП) — это способ организации программы, позволяющий использовать один и тот же код многократно. В отличие от использования функций, ООП позволяет не только разделить программу на фрагменты, но и описать предметы реального мира в виде объектов, а также организовать связи между этими объектами.

Основным "кирпичиком" ООП является класс. Класс включает набор переменных (называемых полями или свойствами класса) и функций для управления этими переменными (называемых методами). В совокупности свойства и методы называются членами класса. После создания класса его название становится новым типом данных. На основе класса можно создать множество объектов (экземпляров класса). При этом для каждого объекта создается свой набор локальных переменных.

Следует заметить, что в JavaScript нет полноценной поддержки объектно-ориентированного программирования, такой как в языках C++ или Java.

Объекты

В языке JavaScript объект можно создать без описания класса с помощью фигурных скобок или класса Object. Оба способа эквиваленты. При указании фигурных скобок конструкция не явным образом передается классу Object.

Создание объекта с помощью фигурных скобок

Создать объект с помощью фигурных скобок можно так:

<Переменная> = {[
   <Свойство 1>: <Значение 1>[,
   ...
   <Свойство N>: <Значение N>]
]};

Если между фигурными скобками нет никаких инструкций, то создается пустой объект:

let obj = {};                // Пустой объект
console.log(obj);            // {}
console.log(typeof obj);     // object

При создании объектов следует учитывать один очень важный момент. Например, нам необходимо определить два пустых объекта, которые в дальнейшем будут использоваться раздельно. Очень силен соблазн написать следующим образом:

let obj1 = obj2 = {};        // Якобы определили два объекта

Проблема заключается в том, что в данном примере создается только один объект, а ссылка на него сохраняется в двух переменных. Таким образом, все изменения obj1 будут отражаться и на переменной obj2:

let obj1 = obj2 = {};        // Якобы определили два объекта
obj1.test = 'Это значение свойства test объекта obj1';
console.log(obj2.test);
// Выведет: Это значение свойства test объекта obj1

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

let obj1 = {}, obj2 = {};
obj1.test = 'Это значение свойства test объекта obj1';
console.log(obj2.test); // Выведет: undefined

Объектная переменная может содержать специальное значение null, которое означает, что переменная не содержит объекта. Это значение удобно возвращать из функции при невозможности создать объект, например, в случае ошибки:

let obj = null;              // Нет объекта
console.log(obj);            // null
console.log(typeof obj);     // object

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов