Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Способи оголосити об'єкт». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)У JavaScript є **кілька способів створити об'єкт**: **літерал об'єкта** (`{}`), конструктор `Object`, `Object.create(proto)`, функція-конструктор, `class`, spread-копіювання та `Object.fromEntries()`. **Ключове:** у 95% випадків достатньо літерала `{}` або `class` для структурованих даних.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняУ JavaScript є **кілька способів створити об'єкт**, і вибір залежить від того, **що тобі потрібно**: простий об'єкт, копія, шаблон чи екземпляр класу. Ось усі основні варіанти: --- ## 1. **Літерал об'єкта (object literal)** - найпростіший і найчастіший спосіб ```javascript const user = { name: 'Tim', age: 25 }; ``` Створює новий об'єкт одразу з потрібними властивостями. Це найпоширеніший спосіб у реальному коді. --- ## 2. **Через конструктор** `Object` ```javascript const user = new Object(); user.name = 'Tim'; user.age = 25; ``` Працює, але зазвичай **не рекомендується**, оскільки літерали (`{}`) коротші й зрозуміліші. --- ## 3. **Через** `Object.create(proto)` ```javascript const person = { species: 'human' }; const user = Object.create(person); user.name = 'Tim'; console.log(user.species); // "human" (успадковано від person) ``` Дозволяє створити об'єкт із **визначеним прототипом** - часто використовується в просунутих сценаріях (наприклад, при ручній роботі з прототипами). --- ## 4. **Через функцію-конструктор** ```javascript function User(name, age) { this.name = name; this.age = age; } const tim = new User('Tim', 25); console.log(tim.name); // "Tim" ``` Функції-конструктори (з `new`) створюють об'єкти визначеного "типу" і автоматично встановлюють `this` на новий об'єкт. --- ## 5. **Через клас (**`class`**)** ```javascript class User { constructor(name, age) { this.name = name; this.age = age; } } const tim = new User('Tim', 25); console.log(tim.name); // "Tim" ``` Синтаксичний цукор над функцією-конструктором, використовується в сучасному JS для створення екземплярів. --- ## 6. **Через деструктуризацію та spread** ```javascript const base = { role: 'user' }; const user = { ...base, name: 'Tim', age: 25 }; ``` Створює **копію** наявного об'єкта з додаванням нових властивостей. --- ## 7. **Через** `Object.fromEntries()` ```javascript const entries = [['name', 'Tim'], ['age', 25]]; const user = Object.fromEntries(entries); console.log(user); // { name: 'Tim', age: 25 } ``` Корисно, якщо потрібно створити об'єкт із пар `ключ-значення` (наприклад, після `Object.entries()` чи `Map`). --- ## Підсумок | Спосіб | Приклад | Коли використовувати | |---|---|---| | Літерал `{}` | `{ name: 'Tim' }` | найчастіший спосіб | | `new Object()` | `new Object()` | рідко, для сумісності | | `Object.create(proto)` | `Object.create(person)` | потрібне керування прототипом | | Функція-конструктор | `new User()` | старий, але робочий підхід | | `class` | `new User()` | сучасний, ООП-підхід | | Spread / копія | `{ ...obj }` | дублювання і розширення об'єктів | | `Object.fromEntries()` | `Object.fromEntries(pairs)` | створення з пар ключ-значення | --- **В одній фразі:** > У JS об'єкт можна створити різними способами - > від простого `{}` до `class`, > але у 95% випадків достатньо **літерала** `{}` чи `class` для структурованих даних.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.