Learn JavaScript

Object() - функция для создания объектов в JavaScript

Object() создаёт объект или преобразует значение в объект.

Это встроенная функция JavaScript, но в обычном коде для создания простых объектов чаще используют литерал {}.

Синтаксис

Object()
Object(value)

Её также можно вызвать через new:

new Object()
new Object(value)

Что делает Object()

Если вызвать Object() без аргументов, получится пустой объект:

console.log(Object());      // {}
console.log(new Object());  // {}

Object() и пустой объект

Для обычного создания объекта чаще пишут так:

const user = {};

Это короче и привычнее, чем:

const user = Object();

Поэтому Object() полезно знать, но в простых случаях обычно используют именно {}.

Если передать объект

Если в Object() уже передать объект, он просто вернётся обратно.

const user = { name: "Anna" };
const result = Object(user);

console.log(result === user); // true

Новый объект здесь не создаётся.

Если передать null или undefined

Object(null) и Object(undefined) возвращают пустой объект.

console.log(Object(null));       // {}
console.log(Object(undefined));  // {}

Это важное отличие от некоторых других способов работы со значениями.

Если передать примитив

Если передать число, строку или boolean, Object() создаст объект-обёртку.

console.log(Object("hello")); // String {"hello"}
console.log(Object(123));     // Number {123}
console.log(Object(true));    // Boolean {true}

На практике такие обёртки почти никогда не нужны напрямую.

Почему это не то же самое, что обычное значение

Примитив и объект-обёртка - не одно и то же.

const a = "hello";
const b = Object("hello");

console.log(typeof a); // "string"
console.log(typeof b); // "object"

Из-за этого поведение может отличаться:

const value = Object(false);

if (value) {
  console.log("Условие выполнится");
}

Хотя внутри лежит false, сам объект считается truthy.

Object() и new Object()

В большинстве случаев результат у них одинаковый.

const a = Object();
const b = new Object();

console.log(a); // {}
console.log(b); // {}

Поэтому в современном коде new Object() обычно используют редко.

Object() и

Эти записи могут давать похожий результат:

const a = Object();
const b = {};

console.log(a); // {}
console.log(b); // {}

Но для обычных объектов литерал {}:

  • короче
  • читается проще
  • чаще встречается в реальном коде

Именно поэтому для создания обычного объекта обычно выбирают {}.

Когда Object() действительно полезен

Object() может пригодиться, когда:

  • нужно явно преобразовать значение в объект
  • код работает с неизвестным типом значения
  • вы читаете старый код, где этот стиль уже используется

Пример:

const value = "hello";
const result = Object(value);

console.log(result);        // String {"hello"}
console.log(typeof result); // "object"

Object() не делает глубокую копию

Если передать в Object() объект, копия не создаётся.

const user = { name: "Anna" };
const result = Object(user);

result.name = "Ivan";

console.log(user.name); // "Ivan"

result и user здесь ссылаются на один и тот же объект.

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

Использовать Object() вместо

const user = Object();

В обычном коде обычно проще так:

const user = {};

Думать, что Object(obj) создаёт копию

const user = { name: "Anna" };
const result = Object(user);

console.log(result === user); // true

Это тот же самый объект.

Забывать про объект-обёртку для примитивов

const value = Object(false);

console.log(typeof value); // "object"

Это уже не обычный boolean, а объект.

Быстрая памятка

  • Object() создаёт объект или преобразует значение в объект
  • без аргументов возвращает {}
  • Object(null) и Object(undefined) тоже дают пустой объект
  • если передать объект, он просто вернётся обратно
  • для обычного создания объекта чаще используют литерал {}

Коротко

Object() - это встроенная функция JavaScript для создания и преобразования объектов. Главное, что стоит запомнить: для обычных объектов почти всегда удобнее использовать {}, а Object(value) чаще полезен именно как способ явного преобразования значения в объект.