Constructeur Object()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
Le constructeur Object() transforme l'entrée en un objet. Son comportement dépend du type de l'entrée.
Syntaxe
new Object()
new Object(value)
Object()
Object(value)
Note :
Object() peut être appelé avec ou sans new, mais parfois avec des effets différents. Voir la valeur de retour.
Paramètres
valueFacultatif-
N'importe quelle valeur.
Valeur de retour
Lorsque le constructeur Object() lui-même est appelé ou construit, sa valeur de retour est un objet :
- Si la valeur est
nullouundefined, il crée et retourne un objet vide. - Si la valeur est déjà un objet, il retourne cette valeur.
- Sinon, il retourne un objet d'un type correspondant à la valeur donnée. Par exemple, passer un primitif
BigIntretourne un objet wrapperBigInt.
Lorsque Object() est construit mais que new.target n'est pas le constructeur Object lui-même, le comportement est légèrement différent : il initialise un nouvel objet avec new.target.prototype comme prototype. Toute valeur d'argument est ignorée. Cela peut se produire, par exemple, lorsque Object() est appelé implicitement avec super() dans le constructeur d'une classe qui étend Object. Dans ce cas, même si vous passez un nombre à super(), la valeur de this à l'intérieur du constructeur ne devient pas une instance de Number.
Exemples
>Créer un nouvel objet
const o = new Object();
o.toto = 42;
console.log(o);
// Object { toto: 42 }
Utiliser Object() avec des types undefined et null
Dans l'exemple suivant, on crée un objet vide dans la variable o :
const o = new Object();
const o = new Object(undefined);
const o = new Object(null);
Obtenir des objets enveloppants pour BigInt et Symbol
Les constructeurs BigInt() et Symbol() lèvent une erreur lorsqu'ils sont appelés avec new, pour éviter l'erreur courante consistant à créer un objet wrapper au lieu de la valeur primitive. La seule façon de créer un objet wrapper pour ces types est d'appeler Object() avec eux :
const objetNombre = new Number(1);
console.log(typeof objetNombre); // "object"
const objetGrandEntier = Object(1n);
console.log(typeof objetGrandEntier); // "object"
const objetSymbole = Object(Symbol("toto"));
console.log(typeof objetSymbole); // "object"
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object-constructor> |