Объекты
В JavaScript есть специальные структуры данных, которые называются объектами (в других языках программирования они называются ассоциативными массивами или хешами).
Объекты создаются с помощью фигурных скобок { }, внутри которых пишутся элементы этого объекта в формате ключ: значение.
Давайте создадим пустой объект:
А теперь создадим объект с данными:
Выведем элемент объекта по его ключу:
Строковые ключи объектов в JavaScript
Ключами объектов могут быть строки:
При этом ключи-строки принято в кавычки не брать:
Давайте выведем элемент нашего объекта по ключу:
Добавление элементов в объекты
В объекты можно добавлять новые элементы, записывая их в нужные ключи. Давайте посмотрим, как это делается. Пусть у нас есть следующий объект:
Добавим в него новые элементы:
obj['b'] = 2;
obj['c'] = 3;
Можно воспользоваться альтернативным синтаксисом:
obj.b = 2;
obj.c = 3;
Проверим содержимое объекта:
Ключи объектов из переменных
Ключи объектов могут храниться в переменных. Посмотрим на примере. Пусть у нас есть следующий объект:
Пусть в переменной хранится ключ:
Выведем элемент объекта по ключу:
Вычисляемые свойства
При объявлении объекта имена его свойств могут браться из переменных. Такие свойства называются вычисляемыми. Давайте посмотрим, как это делается. Пусть у нас есть следующий объект:
a: 1,
b: 2,
c: 3
};
Пусть имя некоторого свойства хранится в переменной:
Давайте сделаем так, чтобы вместо имени свойства взялось значение из нашей переменной. Для этого переменную следует взять в квадратные скобки:
[key]: 1,
b: 2,
c: 3
};
При объявлении вычисляемых свойств можно выполнять некоторый код. Пример:
[key + '1']: 1,
[key + '2']: 2,
[key + '3']: 3
};
Передача объектов по ссылке
Массивы и объекты несколько отличаются от остальных примитивных типов данных. Отличие в том, что переменная, хранящая массив, на самом деле не содержит его, а просто ссылается на него
На практике это означает, что при записи объекта в другую переменную, обе переменных будут ссылаться на один и тот же объект. Давайте попробуем на практике. Пусть у нас есть следующий объект:
Присвоим его из одной переменной в другую:
Изменим одну из переменных:
В результате изменения будут видны и в другой переменной:
Константы с массивами или объектами
Константы, содержащие массивы и объекты, работают интересным образом. JavaScript не разрешает изменять значения этих констант, но изменять свойства объектов и значения элементов массивов - можно.
Давайте посмотрим на примерах. Пусть у нас дан вот такой объект:
Давайте попробуем записать в него что-то другое:
Давайте попробуем записать в константу другой объект:
Однако, если мы попробуем изменить свойство объекта, то это сработает: