Skip to content

Commit 821cf24

Browse files
committed
docs: add third section translation
1 parent 719c448 commit 821cf24

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

1-js/07-object-properties/02-property-accessors/article-fr.md

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,59 @@ alert(user.name); // Alice
9595
alert(user.surname); // Cooper
9696
```
9797

98-
Comme résultat, nous avons une propriété "virtuelle" `fullName`. Elle est lisible et ecrivable.
98+
Comme résultat, nous avons une propriété "virtuelle" `fullName`. Elle est lisible et ecrivable.
99+
100+
## Descripteurs d'accesseur
101+
102+
Les descripteurs d'accesseur de propriété sont différents de ceux pour les propriété de données.
103+
104+
Pour les accesseurs de propriétés, il n'y a pas de `value` ou `writable`, à la place il y a les fonctions `get` et `set`.
105+
106+
Un descripteur d'accesseur peut avoir :
107+
108+
- **`get`** -- une fonction sans arguments, pour la lecture de propriété,
109+
- **`set`** -- une fonction avec un argument, qui est appelée lorsque la propriété change de valeur,
110+
- **`enumerable`** -- identique aux propriétés de données
111+
- **`configurable`** -- identique aux propriétés de données
112+
113+
Par exemple, pour créer un accesseur `fullName` avec `defineProperty`, on peut passer un descripteur avec `get` et `set` :
114+
115+
```js run
116+
let user = {
117+
name: "John",
118+
surname: "Smith"
119+
};
120+
121+
*!*
122+
Object.defineProperty(user, 'fullName', {
123+
get() {
124+
return `${this.name} ${this.surname}`;
125+
},
126+
127+
set(value) {
128+
[this.name, this.surname] = value.split(" ");
129+
}
130+
*/!*
131+
});
132+
133+
alert(user.fullName); // John Smith
134+
135+
for(let key in user) alert(key); // name, surname
136+
```
137+
138+
Veuillez notez qu'une propriété peut être soit un accesseur (qui a les méthodes `get/set`) ou une propriété de donnes (qui a `value`), pas les deux.
139+
140+
Si nous essayons de fournir les deux `get` and `value` dans le même descripteur, il y aura une erreur :
141+
142+
```js run
143+
*!*
144+
// Error: Invalid property descriptor.
145+
*/!*
146+
Object.defineProperty({}, 'prop', {
147+
get() {
148+
return 1
149+
},
150+
151+
value: 2
152+
});
153+
```

0 commit comments

Comments
 (0)