Start · Sprachen · JavaScript · Referenz · new Object()

new Object()

Methode

Der <code>Object()</code>-Konstruktor erzeugt ein neues leeres Objekt oder wandelt einen übergebenen Wert in ein Objekt um.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

new Object(value)

Beschreibung

Der Object()-Konstruktor verhält sich je nach Argument unterschiedlich:

  • Ist value null oder undefined oder fehlt es, wird ein neues, leeres Objekt erzeugt, das von Object.prototype erbt. Das entspricht einem Objekt-Literal {}.
  • Ist value bereits ein Objekt (auch ein Array oder eine Funktion), wird dasselbe Objekt zurückgegeben. Es entsteht keine Kopie.
  • Ist value ein primitiver Wert (string, number, boolean, symbol, bigint), wird er in das passende Wrapper-Objekt verpackt, z. B. String oder Number.

Object() lässt sich mit oder ohne new aufrufen, das Ergebnis ist in beiden Fällen gleich. Eine Ausnahme gibt es nur bei Unterklassen: Wird Object über super() in einer abgeleiteten Klasse aufgerufen, ignoriert es das Argument und erzeugt ein neues Objekt mit dem Prototyp von new.target.

In der Praxis schreibt man für leere Objekte fast immer {}, weil das kürzer ist und schneller gelesen wird. Sinnvoll ist Object(value) vor allem als knappe Prüfung, ob ein Wert ein Objekt ist (Object(x) === x), oder um Primitive gezielt in Objekte umzuwandeln.

Parameter

Name Typ Default Beschreibung
$value any undefined Der Wert, der in ein Objekt umgewandelt werden soll. Bei null/undefined entsteht ein leeres Objekt.

Rückgabewert

Typ
Object
Beschreibung
Ein neues leeres Objekt, das übergebene Objekt selbst (unverändert, gleiche Referenz) oder ein Wrapper-Objekt für einen primitiven Wert.

Beispiele

Leeres Objekt erzeugen und befüllen

const config = new Object();
config.host = 'localhost';
config.port = 8080;

console.log(config);
console.log(Object.getPrototypeOf(config) === Object.prototype);
{ host: 'localhost', port: 8080 } true

Primitive in Wrapper-Objekte umwandeln

const s = Object('Hallo');
const n = Object(42);
const b = Object(false);

console.log(typeof s, s instanceof String);
console.log(typeof n, n instanceof Number);
// Achtung: Wrapper-Objekte sind immer truthy!
console.log(b ? 'truthy' : 'falsy');
object true object true truthy

Prüfen, ob ein Wert ein Objekt ist

const isObject = (value) => Object(value) === value;

console.log(isObject({}));        // true
console.log(isObject([1, 2]));    // true
console.log(isObject(() => {}));  // true
console.log(isObject(null));      // false
console.log(isObject('text'));    // false
true true true false false

Vorhandene Objekte werden nicht kopiert

const original = { name: 'Ada' };
const result = new Object(original);

result.name = 'Grace';
console.log(result === original);
console.log(original.name);
true Grace

// Wichtig · Fallstricke

  • Keine Kopie: new Object(obj) gibt dieselbe Referenz zurück. Für Kopien structuredClone(), { ...obj } oder Object.assign({}, obj) verwenden.
  • Wrapper-Objekte sind truthy: Object(false) ergibt ein Boolean-Objekt, das in Bedingungen als true gilt. Außerdem ist Object('a') === 'a' false. Wrapper-Objekte solltest du im normalen Code vermeiden.
  • Stil: Linter wie ESLint (no-new-object bzw. no-object-constructor) empfehlen statt new Object() das Literal {}.
  • Für Objekte ohne Prototyp (z. B. als reine Lookup-Tabelle) eignet sich Object.create(null). new Object() erbt immer von Object.prototype.
  • Object(Symbol('x')) und Object(10n) funktionieren und liefern Wrapper-Objekte, obwohl new Symbol() und new BigInt() einen TypeError werfen.
  • Wird unterstützt von allen Browsern und Node.js-Versionen.