--- title: Reflect.defineProperty() slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty tags: - ECMAScript 2015 - JavaScript - Méthode - Reference - Reflect translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty original_slug: Web/JavaScript/Reference/Objets_globaux/Reflect/defineProperty ---
La méthode statique Reflect.defineProperty() est semblable à {{jsxref("Object.defineProperty()")}} mais renvoie un {{jsxref("Boolean")}}.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Reflect.defineProperty(cible, cléPropriété, attributs)
ciblecléPropriétéattributsUn {{jsxref("Boolean","booléen","",1)}} qui indique si la propriété a bien été définie.
Une erreur {{jsxref("TypeError")}} si cible n'est pas un {{jsxref("Object")}}.
La méthode Reflect.defineProperty permet d'ajouter ou de modifier finement une propriété d'un objet. Pour plus de détails, voir la méthode {{jsxref("Object.defineProperty")}} qui est très similaire. Object.defineProperty renvoie l'objet et lève une {{jsxref("TypeError")}} si la propriété n'a pas correctement été définie. Reflect.defineProperty renvoie simplement un {{jsxref("Boolean")}} qui indique si la propriété a été définie avec succès ou non.
Reflect.defineProperty()var obj = {};
Reflect.defineProperty(obj, "x", {value: 7}); // true
obj.x; // 7
{{jsxref("Object.defineProperty")}} renvoie un objet si la définition a réussi ou lève une exception {{jsxref("TypeError")}} sinon, ce qui implique d'utiliser un bloc try...catch pour attraper l'erreur. Reflect.defineProperty renvoie un booléen pour indiquer la réussite ou l'échec, un bloc if...else suffit :
if (Reflect.defineProperty(cible, propriété, attributs)) {
// succès
} else {
// échec
}
| Spécification | État | Commentaires |
|---|---|---|
| {{SpecName('ES2015', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}} | {{Spec2('ES2015')}} | Définition initiale. |
| {{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.Reflect.defineProperty")}}