JS Core

Объекты

Научиться создавать объекты с свойствами, использовать dot и bracket нотацию, понимая методы и ссылочную природу объектов.

Начальный (Beginner)

Кратко

Объект — это коллекция свойств: ключ/значение. Объекты позволяют группировать связанные данные: { name: 'Анна', age: 25 }. Свойства доступны через точку (obj.key) или скобки (obj['key']). Методы — это функции внутри объекта.


Подробно

Объекты — основная структура данных в JavaScript. Они хранят данные в виде пар «ключ → значение».

Создание объекта: const user = { name: 'Анна', age: 25, isStudent: true };

Доступ к свойствам: user.name // 'Анна' (dot notation) user['age'] // 25 (bracket notation)

Bracket notation нужна:

  • Когда ключ — переменная: user[key]
  • Когда ключ содержит спецсимволы: user['my-key']

Изменение свойств: user.age = 26; user['isStudent'] = false;

Добавление свойств: user.email = 'anna@example.com';

Удаление свойств: delete user.email;

Методы (функции внутри объекта): const calculator = { add(a, b) { return a + b; }, multiply(a, b) { return a * b; } }; calculator.add(2, 3); // 5

Ссылочная природа: const a = { x: 1 }; const b = a; // b ссылается на тот же объект b.x = 2; console.log(a.x); // 2! (а тоже изменилась!)


Ментальная модель

Объект — как шкаф с ящиками. Каждый ящик имеет наклейку (ключ) и содержимое (значение). Можно открыть ящик по наклейке (dot/bracket notation) или по переменной (только bracket).


Примеры

**Самый простой:**

javascript
const person = {
  name: 'Анна',
  age: 25
};

console.log(person.name); // 'Анна'
console.log(person.age);  // 25

Объект хранит связанные данные: имя и возраст — про одного человека.

**Простой:**

javascript
const user = {
  name: 'Анна',
  greet() {
    return `Привет, меня зовут ${this.name}`;
  }
};

console.log(user.greet()); // Привет, меня зовут Анна

Метод — это функция внутри объекта. this ссылается на сам объект.

**Реальный пример:**

javascript
const original = { name: 'Анна', scores: [90, 85, 95] };
const copy = original;

copy.name = 'Пётр';
console.log(original.name); // 'Пётр' (изменился оригинал!)

// Чтобы создать копию:
const realCopy = { ...original };
realCopy.name = 'Мария';
console.log(original.name); // 'Пётр' (оригинал не изменился)

Объекты передаются по ссылке. copy — это не копия, а другое имя на тот же объект. Spread {} создаёт поверхностную копию (shallow copy): вложенные объекты и массивы, как scores, остаются общими. Это пример будущей темы: синтаксис spread {...} полностью разбирается в J18.


Частые ошибки

**Неправильно:** Путать копирование и ссылку

**Почему:** const b = a; — не создаёт копию. b и a указывают на тот же объект.

**Правильно:** Для копии используйте spread: const b = { ...a }

**Неправильно:** Использовать dot notation с переменной

**Почему:** user.key — ищет свойство с именем 'key', а не значение переменной key.

**Правильно:** Для переменной используйте bracket notation: user[key]

**Неправильно:** Забывать, что [] — массив, {} — объект

**Почему:** [1,2,3] — массив (это объект). { a: 1 } — объект. typeof [] === 'object'.

**Правильно:** Используйте Array.isArray() для проверки на массив.


Важно запомнить

  • Объект — коллекция ключ/значение
  • Dot notation: obj.key, Bracket: obj['key']
  • Bracket нужен для переменных и спецсимволов
  • Методы — функции внутри объекта
  • Объекты передаются по ссылке, не по значению

Связь

Назад: Вы знаете функции (J10) — теперь вы умеете прикреплять их к объектам как методы.

Вперёд: Следующий урок (J12) — optional chaining: безопасный способ доступа к вложенным свойствам.


Читайте дальше

Материалы курса JS Core — PROlab Academy.