Signatur
Beschreibung
Der Object()-Konstruktor verhält sich je nach Argument unterschiedlich:
- Ist
valuenulloderundefinedoder fehlt es, wird ein neues, leeres Objekt erzeugt, das vonObject.prototypeerbt. Das entspricht einem Objekt-Literal{}. - Ist
valuebereits ein Objekt (auch ein Array oder eine Funktion), wird dasselbe Objekt zurückgegeben. Es entsteht keine Kopie. - Ist
valueein primitiver Wert (string,number,boolean,symbol,bigint), wird er in das passende Wrapper-Objekt verpackt, z. B.StringoderNumber.
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
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);
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');
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
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);
// Wichtig · Fallstricke
- Keine Kopie:
new Object(obj)gibt dieselbe Referenz zurück. Für KopienstructuredClone(),{ ...obj }oderObject.assign({}, obj)verwenden. - Wrapper-Objekte sind truthy:
Object(false)ergibt einBoolean-Objekt, das in Bedingungen alstruegilt. Außerdem istObject('a') === 'a'false. Wrapper-Objekte solltest du im normalen Code vermeiden. - Stil: Linter wie ESLint (
no-new-objectbzw.no-object-constructor) empfehlen stattnew Object()das Literal{}. - Für Objekte ohne Prototyp (z. B. als reine Lookup-Tabelle) eignet sich
Object.create(null).new Object()erbt immer vonObject.prototype. Object(Symbol('x'))undObject(10n)funktionieren und liefern Wrapper-Objekte, obwohlnew Symbol()undnew BigInt()einenTypeErrorwerfen.- Wird unterstützt von allen Browsern und Node.js-Versionen.