Способи оголосити об'єкт
У JavaScript є кілька способів створити об'єкт, і вибір залежить від того, що тобі потрібно: простий об'єкт, копія, шаблон чи екземпляр класу.
Ось усі основні варіанти:
1. Літерал об'єкта (object literal) - найпростіший і найчастіший спосіб
const user = {
name: 'Tim',
age: 25
};Створює новий об'єкт одразу з потрібними властивостями. Це найпоширеніший спосіб у реальному коді.
2. Через конструктор Object
const user = new Object();
user.name = 'Tim';
user.age = 25;Працює, але зазвичай не рекомендується,
оскільки літерали ({}) коротші й зрозуміліші.
3. Через Object.create(proto)
const person = { species: 'human' };
const user = Object.create(person);
user.name = 'Tim';
console.log(user.species); // "human" (успадковано від person)Дозволяє створити об'єкт із визначеним прототипом - часто використовується в просунутих сценаріях (наприклад, при ручній роботі з прототипами).
4. Через функцію-конструктор
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)
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
const base = { role: 'user' };
const user = { ...base, name: 'Tim', age: 25 };Створює копію наявного об'єкта з додаванням нових властивостей.
7. Через Object.fromEntries()
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для структурованих даних.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.