Конспект «Объекты». Раздел 1
Создание объекта
Объект — тип данных, который хранит в себе информацию в виде пар «ключ-значение». Каждый элемент сопоставлен со своим ключом и порядок элементов совсем неважен.
Ключи в объекте следует делать уникальными. Если в одном объекте несколько одинаковых ключей, то используется значение последнего.
Несколько правил синтаксиса:
- Ключ обособляется от значения двоеточием.
- Пары «ключ-значение» отделяются друг от друга запятыми.
- Значениями могут быть данные любого типа (число, строка, массив и так далее).
let cat = {
name: 'Кекс',
age: 5
};
Чтение из объекта
Чтобы получить значение свойства, к нему надо обратиться через точку объект.ключ
. Такая запись называется точечной нотацией и возвращает значение свойства объекта, если такое свойство есть. В противном случае вы получите undefined
, то есть ничего.
console.log(cat.name); // Выведет в консоль: Кекс
console.log(cat.age); // Выведет в консоль: 5
console.log(cat.color); // Выведет: undefined. Такого ключа в объекте нет
Запись в объект
Свойства объектов можно не только читать, но и переопределять, как и обычные переменные. А ещё в объект можно добавлять новые свойства уже после того, как он был создан.
cat.age++; // Увеличили возраст кота на 1
console.log(cat.age) // Выведет: 6
cat.name = 'Рокки'; // Заменили снаружи значение свойства name
console.log(cat.name); // Выведет: Рокки
cat.color = 'рыжий'; // Добавили в объект новое свойство
console.log(cat.color); // Выведет: рыжий
Передача по ссылке
Объект всегда один, в памяти не создаётся новое место под копию объекта. Каждая переменная содержит не новую отдельную сущность, а ссылку на один-единственный объект. Поэтому когда мы меняем что-то в объекте через одну из переменных, в которой содержится ссылка на него, изменения видны во всех других переменных, будь их хоть двадцать или сорок. Это важная особенность объектов, которую надо запомнить. Она так и называется — передача объектов по ссылке.
let firstCat = {
name: 'Кекс',
age: 5
};
let secondCat = firstCat;
console.log(secondCat); // Выведет: {name: "Кекс", age:5}
firstCat.name = 'Снежок';
console.log(secondCat); // Выведет: {name: "Снежок", age:5}