Что такое объект в программировании — и почему два одинаковых объекта не равны

Смотри, фокус. Две строчки кода, в них одно и то же:
const a = { name: "Аня" }
const b = { name: "Аня" }
a === b // false
Одинаковые до буквы — и «не равны». Это не баг языка. Это главная подсказка о том, что такое объект на самом деле. Разберёмся — и ты начнёшь видеть объекты в каждом втором файле, который пишет тебе ИИ.
Что такое объект
Объект — это карточка с подписанными полями. У каждого поля есть имя (ключ) и значение.
const user = {
name: "Аня",
age: 24,
isPro: true
}
Сравни с массивом: там значения стоят по порядку и ты достаёшь их по номеру. В объекте порядок не важен — ты достаёшь значение по имени:
user.name // "Аня"
user.age // 24
Самая точная бытовая аналогия — анкета. В анкете нет «третьего поля», есть поле «Имя» и поле «Возраст». Вот и объект так же.
Значением поля может быть что угодно: число, текст, список — или другой объект. Так получаются вложенные данные:
const order = {
id: 1042,
user: { name: "Аня" },
items: ["чай", "мёд"]
}
order.user.name // "Аня"
Путь order.user.name читается как адрес: «в заказе → в пользователе → имя».
Где ты их встретишь
Везде. Правда, везде.
- Ответ от сервера. Когда приложение спрашивает данные у API, приходит JSON. А JSON — это буквально объект, записанный текстом. Фигурные скобки, ключи в кавычках, двоеточия — один в один.
- Настройки.
{ theme: "dark", lang: "ru" }— так хранятся параметры почти любой программы. - Компоненты React. Всё, что передают в компонент, приходит одним объектом — «пропсами». Пишешь
<Card title="Привет" />, а внутри компонент получает{ title: "Привет" }. - Состояние экрана. Что открыто, что выбрано, что загружено — чаще всего лежит в объекте.
Практический навык отсюда: когда видишь в коде от ИИ цепочку через точки — data.user.profile.avatar — ты видишь путь по вложенным объектам. Если где-то по дороге кусок отсутствует, программа упадёт с ошибкой Cannot read properties of undefined. Это одна из самых частых ошибок новичка, и теперь ты знаешь, что она значит: на каком-то шаге адреса «квартиры» не оказалось.
Почему два одинаковых объекта не равны
Вернёмся к фокусу из начала.
Когда ты сравниваешь числа, 5 === 5 проверяет сами значения. А объект так не сравнивается. Переменная хранит не саму карточку, а ссылку на неё — адрес, где карточка лежит в памяти. Про это подробно — в статье про переменные.
a и b — это две разные карточки, просто заполненные одинаково. Два разных листа бумаги с одним и тем же текстом. Сравнение === спрашивает: «это один и тот же лист?» Нет — два. Значит, false.
А вот так будет true:
const a = { name: "Аня" }
const c = a
a === c // true — это один и тот же лист
И это же объясняет коварный баг: поменял поле в c — поменялось и в a. Лист-то один.
Как это спасает тебя в реальном коде
Три ситуации, где это знание сразу окупается:
- Проверка «изменилось ли что-то». Если код сравнивает два объекта через
===, он проверяет адрес, а не содержимое. Хочешь сравнить содержимое — попроси ИИ: «сравни эти объекты по полям, а не по ссылке». - React не видит изменений. Если поменять поле внутри объекта-состояния напрямую, React смотрит на адрес, видит тот же самый — и не перерисовывает экран. Поэтому в React-коде от ИИ так часто пишут
{ ...user, name: "Оля" }: три точки делают новую карточку с исправленным полем. - Опечатка в имени поля.
user.nmaeне вызовет ошибку — просто вернёт пустоту. Объект не знает, что ты ошибся, он честно говорит: «такого поля нет». Если значение внезапно пустое, первым делом сверь написание ключа.
Объект и JSON — это одно и то же?
Почти. JSON — это объект, записанный как текст, чтобы его можно было передать по сети или сохранить в файл. У JSON строже правила: ключи всегда в двойных кавычках, внутри не бывает функций.
Чем объект отличается от массива?
Массив — список по порядку, достаёшь по номеру. Объект — набор подписанных полей, достаёшь по имени. Подробное сравнение с правилом выбора — в разборе массив или объект.
Бывают объекты в Python?
Да, только называется это словарём — dict. Та же идея: ключ и значение. Синтаксис почти тот же: {"name": "Аня"}.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





