You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/07-object-properties/01-property-descriptors/article.md
+7-61Lines changed: 7 additions & 61 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,11 +19,7 @@ Nous ne les avons pas encore vues, car généralement elles ne se présentent pa
19
19
20
20
Voyons d’abord comment obtenir ces "flags".
21
21
22
-
<<<<<<< HEAD
23
-
La methode [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyDescriptor) permet d'interroger les informations *complètes* sur une propriété.
24
-
=======
25
-
The method [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor) allows to query the *full* information about a property.
26
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
22
+
La methode [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyDescriptor) permet d'interroger les informations *complètes* à propos d'une propriété.
Pour changer les attributs, on peut utiliser [Object.defineProperty](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty).
63
-
=======
64
-
To change the flags, we can use [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty).
65
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
66
58
67
59
La syntaxe est la suivante:
68
60
@@ -202,11 +194,7 @@ alert(Object.keys(user)); // name
202
194
203
195
Le descripteur non configurable (`configurable: false`) est parfois prédéfini pour les objets et propriétés intégrés.
204
196
205
-
<<<<<<< HEAD
206
-
Une propriété non configurable ne peut pas être supprimée.
207
-
=======
208
-
A non-configurable property can't be deleted, its attributes can't be modified.
209
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
197
+
Une propriété non configurable ne peut pas être supprimée, ses attributs ne peuvent pas être modifiés.
210
198
211
199
Par exemple, `Math.PI` est en lecture seule, non énumérable et non configurable :
212
200
@@ -231,30 +219,18 @@ Math.PI = 3; // Error, because it has writable: false
231
219
// supprimer Math.PI ne fonctionnera pas non plus
232
220
```
233
221
234
-
<<<<<<< HEAD
235
-
Rendre une propriété non configurable est une route à sens unique. Nous ne pouvons pas la rétablir avec `defineProperty`.
236
-
237
-
Pour être précis, la non-configurabilité impose plusieurs restrictions à `defineProperty` :
238
-
1. Impossible de changer le flag `configurable`.
239
-
2. Impossible de changer le drapeau `enumerable`.
240
-
3. Impossible de changer `writable: false` à `true` (l'inverse fonctionne).
241
-
4. Impossible de changer `get/set` pour une propriété d'accesseur (mais peut les affecter en cas d'absence).
242
-
243
-
**L'idée de "configurable : false" est d'empêcher les changements d'indicateurs de propriété et sa suppression, tout en permettant de changer sa valeur.**
244
-
=======
245
-
We also can't change `Math.PI` to be `writable` again:
222
+
Nous ne pouvons pas non plus changer `Math.PI` pour qu'il soit à nouveau `writable` (éditable) :
There's absolutely nothing we can do with`Math.PI`.
229
+
Il n'y a absolument rien que nous puissions faire avec`Math.PI`.
253
230
254
-
Making a property non-configurable is a one-way road. We cannot change it back with`defineProperty`.
231
+
Rendre une propriété nonconfigurable est une voie à sens unique. Nous ne pouvons pas le modifier avec`defineProperty`.
255
232
256
-
**Please note: `configurable: false` prevents changes of property flags and its deletion, while allowing to change its value.**
257
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
233
+
**Veuillez noter : `configurable: false` empêche les changements d'indicateurs de propriété et sa suppression, tout en permettant de changer sa valeur.**
258
234
259
235
Ici, `user.name` n'est pas configurable, mais nous pouvons toujours le changer (car il est accessible en écriture) :
260
236
@@ -298,11 +274,7 @@ We can change `writable: true` to `false` for a non-configurable property, thus
298
274
299
275
## Object.defineProperties
300
276
301
-
<<<<<<< HEAD
302
277
Il y a une méthode [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperties) qui permet de définir plusieurs propriétés à la fois.
303
-
=======
304
-
There's a method [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) that allows to define many properties at once.
305
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
306
278
307
279
La syntaxe est la suivante:
308
280
@@ -328,11 +300,7 @@ Nous pouvons donc définir plusieurs propriétés à la fois.
328
300
329
301
## Object.getOwnPropertyDescriptors
330
302
331
-
<<<<<<< HEAD
332
303
Pour obtenir tous les descripteurs de propriété à la fois, nous pouvons utiliser la méthode [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyDescriptors).
333
-
=======
334
-
To get all property descriptors at once, we can use the method [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors).
335
-
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
336
304
337
305
Avec `Object.defineProperties`, elle peut être utilisé comme moyen de cloner un objet conscient des attributs:
338
306
@@ -358,7 +326,6 @@ Les descripteurs de propriété fonctionnent au niveau des propriétés individu
358
326
359
327
Il existe également des méthodes qui limitent l'accès à l'objet *entier*:
: Interdit l'ajout/la suppression/la modification de propriétés. Définit `configurable: false, writeable: false` pour toutes les propriétés existantes.
: Retourne `true` si l'ajout/la suppression/la modification de propriétés est interdite et si toutes les propriétés actuelles sont `configurable: false, writable: false`.
0 commit comments