La méthode statique Reflect
.defineProperty()
est semblable à Object.defineProperty()
mais renvoie un Boolean
.
Syntaxe
Reflect.defineProperty(cible, cléPropriété, attributs)
Paramètres
cible
- L'objet cible sur lequel on veut définir la propriété.
cléPropriété
- Le nom de la propriété qu'on souhaite définir ou modifier.
attributs
- Les attributs de de la propriété qu'on ajoute ou qu'on modifie.
Valeur de retour
Un booléen qui indique si la propriété a bien été définie.
Exceptions
Une erreur TypeError
si cible
n'est pas un Object
.
Description
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 Object.defineProperty
qui est très similaire. Object.defineProperty
renvoie l'objet et lève une TypeError
si la propriété n'a pas correctement été définie. Reflect.defineProperty
renvoie simplement un Boolean
qui indique si la propriété a été définie avec succès ou non.
Exemples
Utiliser Reflect.defineProperty()
var obj = {}; Reflect.defineProperty(obj, "x", {value: 7}); // true obj.x; // 7
Vérifier si la définition de propriété a réussi
Object.defineProperty
renvoie un objet si la définition a réussi ou lève une exception 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écifications
Spécification | État | Commentaires |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'Reflect.defineProperty' dans cette spécification. |
Standard | Définition initiale. |
ECMAScript 2017 Draft (ECMA-262) La définition de 'Reflect.defineProperty' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | 49 | 42 (42) | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | 42.0 (42) | Pas de support | Pas de support | Pas de support |