Начнём с основы
В JS объект можно получить несколькими идиомами — выбирай по ясности и нужному прототипу.
const a = { x: 1 };
const b = new Object();
const c = Object.create(null);
const d = Object.create({ greet() { return "hi"; } });
function User(name) { this.name = name; }
const e = new User("Ada");
class Person {
constructor(name) { this.name = name; }
}
const f = new Person("Bob");
const g = (() => ({ role: "guest" }))();
Также: Object.assign / spread для копий полей, structuredClone для deep clone данных.
Итог: литерал — дефолт; Object.create — явный прототип; class/new — экземпляры с контрактом; factory — гибкое создание.