aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/reflect/defineproperty/index.md
blob: 344aa1fb9f13a81270400062f2b9819d45acbe64 (plain)
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()")}}