Skip to content

Commit 6deb8ad

Browse files
Apply fixes and do some trnslations in '1-js/07-object-properties/01-property-descriptors/article.md'
1 parent 0a13e0b commit 6deb8ad

File tree

1 file changed

+24
-22
lines changed
  • 1-js/07-object-properties/01-property-descriptors

1 file changed

+24
-22
lines changed

1-js/07-object-properties/01-property-descriptors/article.md

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ Voyons d’abord comment obtenir ces "flags".
2121

2222
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é.
2323

24-
La syntaxe est la suivante:
24+
La syntaxe est la suivante :
25+
2526
```js
2627
let descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
2728
```
@@ -32,9 +33,9 @@ let descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
3233
`propertyName`
3334
: Le nom de la propriété.
3435

35-
La valeur renvoyée est un objet dit "descripteur de propriété": il contient la valeur et tous les descripteurs.
36+
La valeur renvoyée est un objet dit "descripteur de propriété" : il contient la valeur et tous les descripteurs.
3637

37-
Par exemple:
38+
Par exemple :
3839

3940
```js run
4041
let user = {
@@ -56,7 +57,7 @@ alert( JSON.stringify(descriptor, null, 2 ) );
5657

5758
Pour changer les attributs, on peut utiliser [Object.defineProperty](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty).
5859

59-
La syntaxe est la suivante:
60+
La syntaxe est la suivante :
6061

6162
```js
6263
Object.defineProperty(obj, propertyName, descriptor)
@@ -70,7 +71,7 @@ Object.defineProperty(obj, propertyName, descriptor)
7071

7172
Si la propriété existe, `defineProperty` met à jour ses attributs. Sinon, il crée la propriété avec la valeur et les descripteurs donnés. Dans ce cas, si aucun drapeau n'est fourni, il est supposé `false`.
7273

73-
Par exemple, ici, une propriété `name` est créée avec tous les attributs falsy:
74+
Par exemple, ici, une propriété `name` est créée avec tous les attributs falsy :
7475

7576
```js run
7677
let user = {};
@@ -96,7 +97,7 @@ alert( JSON.stringify(descriptor, null, 2 ) );
9697
*/
9798
```
9899

99-
Comparez-le avec `user.name` "normalement créé" ci-dessus: maintenant tous les attributs sont falsy. Si ce n'est pas ce que nous voulons, nous ferions mieux de leur attribuer la valeur `true` dans `descriptor`.
100+
Comparez-le avec `user.name` "normalement créé" ci-dessus : maintenant tous les attributs sont falsy. Si ce n'est pas ce que nous voulons, nous ferions mieux de leur attribuer la valeur `true` dans `descriptor`.
100101

101102
Voyons maintenant les effets des attributs par exemple.
102103

@@ -126,7 +127,7 @@ Maintenant, personne ne peut changer le nom de notre utilisateur, à moins qu’
126127
En mode non strict, aucune erreur ne se produit lors de l'écriture dans des propriétés non inscriptibles et autres. Mais l'opération ne réussira toujours pas. Les actions violant l'indicateur sont simplement ignorées en silence dans les non-stricts.
127128
```
128129

129-
Voici le même exemple, mais la propriété est créée à partir de zéro:
130+
Voici le même exemple, mais la propriété est créée à partir de zéro :
130131

131132
```js run
132133
let user = { };
@@ -148,7 +149,7 @@ user.name = "Pete"; // Error
148149

149150
Ajoutons maintenant un `toString` personnalisé à `user`.
150151

151-
Normalement, un `toString` intégré pour les objets n'est pas énumérable, il n'apparaît pas dans `for..in`. Mais si nous ajoutons notre propre `toString`, alors, par défaut, il apparaît dans `for..in`, comme ceci:
152+
Normalement, un `toString` intégré pour les objets n'est pas énumérable, il n'apparaît pas dans `for..in`. Mais si nous ajoutons notre propre `toString`, alors, par défaut, il apparaît dans `for..in`, comme ceci :
152153

153154
```js run
154155
let user = {
@@ -158,7 +159,7 @@ toString() {
158159
}
159160
};
160161

161-
// Par défaut, nos deux propriétés sont répertoriées:
162+
// Par défaut, nos deux propriétés sont répertoriées :
162163
for (let key in user) alert(key); // name, toString
163164
```
164165

@@ -179,12 +180,12 @@ enumerable: false
179180
});
180181

181182
*!*
182-
// Maintenant notre toString disparaît:
183+
// Maintenant notre toString disparaît :
183184
*/!*
184185
for (let key in user) alert(key); // name
185186
```
186187

187-
Les propriétés non énumérables sont également exclues de `Object.keys`:
188+
Les propriétés non énumérables sont également exclues de `Object.keys` :
188189

189190
```js
190191
alert(Object.keys(user)); // name
@@ -211,6 +212,7 @@ alert( JSON.stringify(descriptor, null, 2 ) );
211212
}
212213
*/
213214
```
215+
214216
Ainsi, un programmeur est incapable de changer la valeur de `Math.PI` ou de le remplacer.
215217

216218
```js run
@@ -243,11 +245,11 @@ Object.defineProperty(user, "name", {
243245
configurable: false
244246
});
245247

246-
user.name = "Pete"; // works fine
248+
user.name = "Pete"; // ça fonctionne
247249
delete user.name; // Error
248250
```
249251

250-
And here we make `user.name` a "forever sealed" constant, just like the built-in `Math.PI`:
252+
Ici, nous faisons de `user.name` une constante "scellée à jamais", tout comme `Math.PI` :
251253

252254
```js run
253255
let user = {
@@ -266,17 +268,17 @@ delete user.name;
266268
Object.defineProperty(user, "name", { value: "Pete" });
267269
```
268270

269-
```smart header="The only attribute change possible: writable true -> false"
270-
There's a minor exception about changing flags.
271+
```smart header="Le seul changement d'attribut possible : writable true -> false"
272+
Il existe une exception mineure concernant la modification des indicateurs.
271273
272-
We can change `writable: true` to `false` for a non-configurable property, thus preventing its value modification (to add another layer of protection). Not the other way around though.
274+
Nous pouvons changer `writable: true` en `false` pour une propriété non configurable, empêchant ainsi la modification de sa valeur (pour ajouter une autre couche de protection).
273275
```
274276

275277
## Object.defineProperties
276278

277279
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.
278280

279-
La syntaxe est la suivante:
281+
La syntaxe est la suivante :
280282

281283
```js
282284
Object.defineProperties(obj, {
@@ -286,7 +288,7 @@ prop2: descriptor2
286288
});
287289
```
288290

289-
Par exemple:
291+
Par exemple :
290292

291293
```js
292294
Object.defineProperties(user, {
@@ -302,13 +304,13 @@ Nous pouvons donc définir plusieurs propriétés à la fois.
302304

303305
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).
304306

305-
Avec `Object.defineProperties`, elle peut être utilisé comme moyen de cloner un objet conscient des attributs:
307+
Avec `Object.defineProperties`, elle peut être utilisé comme moyen de cloner un objet en tenant compte des attributs :
306308

307309
```js
308310
let clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj));
309311
```
310312

311-
Normalement, lorsque nous clonons un objet, nous utilisons une affectation pour copier les propriétés, comme ceci:
313+
Normalement, lorsque nous clonons un objet, nous utilisons une affectation pour copier les propriétés, comme ceci :
312314

313315
```js
314316
for (let key in user) {
@@ -324,7 +326,7 @@ Une autre différence est que `for..in` ignore les propriétés symboliques, mai
324326

325327
Les descripteurs de propriété fonctionnent au niveau des propriétés individuelles.
326328

327-
Il existe également des méthodes qui limitent l'accès à l'objet *entier*:
329+
Il existe également des méthodes qui limitent l'accès à l'objet *entier* :
328330

329331
[Object.preventExtensions(obj)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/preventExtensions)
330332
: Interdit l'ajout de nouvelles propriétés à l'objet.
@@ -335,7 +337,7 @@ Il existe également des méthodes qui limitent l'accès à l'objet *entier*:
335337
[Object.freeze(obj)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/freeze)
336338
: Interdit l'ajout/la suppression/la modification de propriétés. Définit `configurable: false, writeable: false` pour toutes les propriétés existantes.
337339

338-
Et aussi il y a des tests pour eux:
340+
Et aussi il y a des tests pour eux :
339341

340342
[Object.isExtensible(obj)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/isExtensible)
341343
: Retourne `false` si l'ajout de propriétés est interdit, sinon `true`.

0 commit comments

Comments
 (0)