Об’єкти як асоціативні масиви

Перший - це асоціативний масив: структура, придатна для зберігання будь-яких даних. У цьому розділі ми розглянемо використання об'єктів саме як масивів.

Другий - мовні можливості для об'єктно-орієнтованого програмування. Ці можливості ми вивчимо в наступних розділах підручника.

Асоціативний масив - структура даних, в якій можна зберігати будь-які дані в форматі ключ-значення.

Її можна легко уявити як шафа з підписаними ящиками. Всі дані зберігаються в скриньках. На ім'я можна легко знайти ящик і взяти те значення, яке в ньому лежить.

Об'єкти як асоціативні масиви

На відміну від реальних шаф, в асоціативний масив можна в будь-який момент додати нові іменовані «ящики» або видалити існуючі. Далі ми побачимо приклади, як це робиться.

До речі, в інших мовах програмування таку структуру даних також називають «словник» і «хеш».

Порожній об'єкт ( «порожню шафу») може бути створений одним з двох синтаксисів:

Зазвичай все користуються синтаксисом (2). тому він коротше.

Об'єкт може містити в собі будь-які значення, які називаються властивостями об'єкта. Доступ до властивостей здійснюється на ім'я властивості (іноді говорять «по ключу»).

Наприклад, створимо об'єкт person для зберігання інформації про людину:

Об'єкти як асоціативні масиви

Основні операції з об'єктами - це створення, отримання та видалення властивостей.

Для звернення до властивостей використовується запис «через точку», виду об'ект.свойство. наприклад:

Об'єкти як асоціативні масиви

Значення зберігаються «всередині» ящиків. Звернемо увагу - будь-які значення, будь-яких типів: число, рядок - не важливо.

Щоб прочитати їх - також звернемося через точку:

Видалення здійснюється оператором delete:

Залишилося тільки властивість name:

Об'єкти як асоціативні масиви

Іноді буває потрібно перевірити, чи є в об'єкті властивість з певним ключем.

Для цього є особливий оператор: "in".

Його синтаксис: "prop" in obj. причому ім'я властивості - в вигляді рядка, наприклад:

Втім, частіше використовується інший спосіб - порівняння значення з undefined.

Помилки не буде.

Але якщо властивість не існує, то повернеться спеціальне значення undefined: