Что такое…

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

Иллюстрация: шкафчик с подписанными ящичками — в каждом своё

Смотри, фокус. Две строчки кода, в них одно и то же:

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. Лист-то один.

Как это спасает тебя в реальном коде

Три ситуации, где это знание сразу окупается:

  1. Проверка «изменилось ли что-то». Если код сравнивает два объекта через ===, он проверяет адрес, а не содержимое. Хочешь сравнить содержимое — попроси ИИ: «сравни эти объекты по полям, а не по ссылке».
  2. React не видит изменений. Если поменять поле внутри объекта-состояния напрямую, React смотрит на адрес, видит тот же самый — и не перерисовывает экран. Поэтому в React-коде от ИИ так часто пишут { ...user, name: "Оля" }: три точки делают новую карточку с исправленным полем.
  3. Опечатка в имени поля. user.nmae не вызовет ошибку — просто вернёт пустоту. Объект не знает, что ты ошибся, он честно говорит: «такого поля нет». Если значение внезапно пустое, первым делом сверь написание ключа.

Объект и JSON — это одно и то же?

Почти. JSON — это объект, записанный как текст, чтобы его можно было передать по сети или сохранить в файл. У JSON строже правила: ключи всегда в двойных кавычках, внутри не бывает функций.

Чем объект отличается от массива?

Массив — список по порядку, достаёшь по номеру. Объект — набор подписанных полей, достаёшь по имени. Подробное сравнение с правилом выбора — в разборе массив или объект.

Бывают объекты в Python?

Да, только называется это словарём — dict. Та же идея: ключ и значение. Синтаксис почти тот же: {"name": "Аня"}.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →