edubun
Русский

Объекты

Объект собирает связанные значения под именами. В { name: "Coco", age: 3 } pet.name даёт "Coco", а pet.age даёт 3.

Значения с подписями

Массив хорош для списка похожих вещей по порядку. Но многие вещи в мире лучше описывать набором подписанных фактов: у питомца есть имя, вид и возраст; у товара есть название, цена и количество на складе. Объект хранит именно это. Он представляет собой набор свойств, и каждое свойство состоит из ключа (подписи) и значения.

const pet = {
  name: "Coco",
  kind: "cat",
  age: 3,
};
console.log(pet.name);        // Coco
console.log(pet["kind"]);     // cat
console.log(pet.age + 1);     // 4

Объект пишут в фигурных скобках, каждое свойство в виде key: value, через запятую. Запятая после последнего свойства допускается. Чтобы прочитать свойство, напиши объект, точку и ключ: pet.name. Другая форма использует квадратные скобки и строку: pet["kind"]. Скобки нужны, когда ключ хранится в переменной, как в pet[field], или когда в нём есть пробел. Чтение несуществующего ключа даёт undefined.

Изменение и добавление свойств

Присвой значение свойству, чтобы изменить его, и присвой значение новому ключу, чтобы добавить свойство. Как и с массивами, это работает, даже если объект объявлен через const, потому что переменная по-прежнему указывает на тот же объект.

const player = { name: "Sam", score: 0 };
player.score += 10;
player.level = 2;
console.log(`${player.name} ${player.score} ${player.level}`);   // Sam 10 2
delete player.level;
console.log(player.level);   // undefined

Списки объектов

Массивы и объекты естественно сочетаются. В массиве объектов большинство программ хранит записи: корзину покупок, список класса, результаты поиска. Ты проходишь циклом по массиву и читаешь из каждого объекта нужные свойства.

const basket = [
  { item: "pen", price: 2 },
  { item: "book", price: 12 },
  { item: "bag", price: 25 },
];
let total = 0;
for (const line of basket) {
  total += line.price;
}
console.log("Total:", total);   // Total: 39

Значения внутри объекта могут быть любыми, в том числе массивами и другими объектами. const user = { name: "Ana", tags: ["admin", "editor"] }; позволяет написать user.tags[0], чтобы добраться до "admin". Такие цепочки читают слева направо: начни с user, перейди к его свойству tags, затем возьми индекс 0.

Методы и ключи объекта

Свойство, значением которого является функция, называется методом. Ты всё это время вызывал методы: console.log является методом log объекта console, а Math.round является методом round объекта Math. Внутри метода ключевое слово this указывает на объект, у которого вызвали метод, так что метод может читать свойства своего объекта. Наконец, Object.keys(pet) даёт массив ключей, здесь ["name", "kind", "age"], и это удобно, чтобы пройти циклом по каждому свойству.

const counter = {
  count: 0,
  add() {
    this.count++;
  },
};
counter.add();
counter.add();
console.log(counter.count);   // 2

Разобранный пример. Запись о книге { title: "Notes", pages: 120, read: 45 } может сообщить прогресс через Math.round(book.read / book.pages * 100), что даёт 38, то есть 38 процентов. Имена pages и read делают формулу понятной, а b[1] / b[0] такой понятной никогда не будет.

Массив или объект?

Выбрать помогает быстрая проверка. Если значения одного рода и важен их порядок, например оценки класса или шаги рецепта, бери массив и обращайся к ним по позиции. Если значения являются разными фактами об одной вещи, например название, цена и остаток товара, бери объект и обращайся к ним по имени. Большинство настоящих данных смешивает оба вида: массив товаров, где каждый товар является объектом. Когда ты печатаешь объект в поле для практики, он выглядит компактно, например {"name":"Coco","age":3}; чтение отдельных свойств даёт более чистый вывод.

объектГруппа именованных значений в { }
свойствоОдна пара key: value в объекте
ключИмя свойства, например age
запись через точкуpet.name
запись через скобкиpet["name"] или pet[field]
методСвойство, значением которого является функция
thisВнутри метода: объект, у которого его вызвали
Object.keysМассив ключей объекта
  1. Что выведет этот код?
    const car = { brand: "Kia", year: 2020 };
    console.log(car.year);
  2. Что выведет этот код?
    const car = { brand: "Kia", year: 2020 };
    console.log(car["brand"]);
  3. Что выведет этот код?
    const car = { brand: "Kia" };
    console.log(typeof car.color);
    • undefined
    • Ошибку
    • string
  4. Что выведет этот код?
    const box = { w: 4, h: 5 };
    box.w = 6;
    console.log(box.w * box.h);
  5. Что выведет этот код?
    const p = { name: "Lee" };
    p.age = 40;
    console.log(Object.keys(p).length);
  6. Что выведет этот код?
    const field = "score";
    const r = { score: 88 };
    console.log(r[field]);
  7. Что выведет этот код?
    const u = { name: "Ana", tags: ["admin", "editor"] };
    console.log(u.tags[1]);
  8. Что выведет этот код?
    const items = [{ n: 2 }, { n: 5 }, { n: 1 }];
    let t = 0;
    for (const it of items) {
      t += it.n;
    }
    console.log(t);
  9. Что выведет этот код?
    const c = {
      count: 5,
      add() {
        this.count++;
      },
    };
    c.add();
    console.log(c.count);
  10. Какая строка добавляет объекту item свойство price со значением 9?
    • item.price = 9;
    • item = price: 9;
    • item.push(price, 9);
Главное
  • Объекты хранят свойства key: value в { }.
  • Читай через obj.key или obj["key"]; скобки нужны для ключей в переменных.
  • Присваивание меняет или добавляет свойство; отсутствующие ключи читаются как undefined.
  • Массивы объектов хранят записи; проходи циклом и читай каждое свойство.
  • Метод является свойством-функцией; this является его объектом.
Источники курса (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Проверено: 2026-10-17