Что такое объект?
До сих пор в каждой переменной лежало одно значение: число, кусок текста или массив однотипных значений. В этом уроке вы узнаете про объекты. Объект хранит вместе несколько значений, которые описывают одну вещь.
Представьте зоомагазин, который ведёт учёт своих животных. У каждого животного есть имя, вид и возраст. Их можно хранить в отдельных переменных:
const petName = "Рекс";
const petSpecies = "собака";
const petAge = 3;Для одного животного это работает, но для десяти понадобится тридцать переменных, и ничто в коде не подскажет, какие из них относятся друг к другу. Можно вместо этого положить значения в массив:
const pet = ["Рекс", "собака", 3];Теперь они вместе, но придётся помнить, что индекс 0 — это имя, а индекс 1 — вид. А что означает pet[2]? Код этого не говорит.
Объект решает обе проблемы. Он хранит значения вместе и даёт каждому из них имя:
const pet = {
name: "Рекс",
species: "собака",
age: 3
};Объект записывают в фигурных скобках { }. Внутри находятся его свойства, разделённые запятыми. У каждого свойства есть ключ (его имя: name, species, age), затем двоеточие и значение. Ключи пишут как имена переменных, без кавычек. Значением может быть всё, что вы уже знаете: текст, число, логическое значение и даже массив.
Короткий объект умещается в одной строке; длинный удобнее читать, когда каждое свойство на своей строке, как выше. Это одно и то же. Когда вы выводите объект, консоль показывает его в одной строке, так, как он записан в коде:
const pet = { name: "Рекс", species: "собака", age: 3 };
console.log(pet);{ name: "Рекс", species: "собака", age: 3 }Как и массив, не присоединяйте объект к тексту через +: "Питомец: " + pet превратит объект в текст [object Object], из которого мало что понятно. Поставьте между ними запятую: console.log("Питомец:", pet).
При записи объектов бывает две типичные ошибки. Если забыть запятую между двумя свойствами:
const pet = { name: "Рекс" species: "собака" };программа завершится с SyntaxError: Unexpected identifier 'species': JavaScript не ожидал ещё один ключ без запятой перед ним. А внутри фигурных скобок пишут двоеточие, а не =:
const pet = { name = "Рекс" };Это заканчивается ошибкой SyntaxError: Invalid shorthand property initializer. Сообщение мало что подсказывает, поэтому запомните: увидев его, ищите = внутри фигурных скобок.
Задание
- 1
Удалите три переменные и
console.log. Вместо них создайте константуpetс объектом, у которого такие свойства, в таком порядке:nameсо значением"Рекс",speciesсо значением"собака",ageсо значением3иvaccinatedсо значениемtrue. Выведите его черезconsole.log(pet);. В консоли должно получиться{ name: "Рекс", species: "собака", age: 3, vaccinated: true }. - 2
Ниже выведите объект ещё раз, теперь с подписью
Питомец:перед ним. Подпись и объект разделите запятой. Новая строка должна быть такой:Питомец: { name: "Рекс", species: "собака", age: 3, vaccinated: true }.