1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
---
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
---
{{JSRef}}
La méthode statique **`Reflect`\*\***`.defineProperty()`\*\* est semblable à {{jsxref("Object.defineProperty()")}} mais renvoie un {{jsxref("Boolean")}}.
{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}
## 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 {{jsxref("Boolean","booléen","",1)}} qui indique si la propriété a bien été définie.
### Exceptions
Une erreur {{jsxref("TypeError")}} si `cible` n'est pas un {{jsxref("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 {{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.
## Exemples
### Utiliser `Reflect.defineProperty()`
```js
var obj = {};
Reflect.defineProperty(obj, "x", {value: 7}); // true
obj.x; // 7
```
### Vérifier si la définition de propriété a réussi
{{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`](/fr/docs/Web/JavaScript/Reference/Instructions/try...catch) pour attraper l'erreur. `Reflect.defineProperty` renvoie un booléen pour indiquer la réussite ou l'échec, un bloc [`if...else`](/fr/docs/Web/JavaScript/Reference/Instructions/if...else) suffit :
```js
if (Reflect.defineProperty(cible, propriété, attributs)) {
// succès
} else {
// échec
}
```
## Spécifications
| 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')}} | |
## Compatibilité des navigateurs
{{Compat("javascript.builtins.Reflect.defineProperty")}}
## Voir aussi
- {{jsxref("Reflect")}}
- {{jsxref("Object.defineProperty()")}}
|