Skip to content

Commit 8aecd64

Browse files
authored
Merge pull request #460 from ArmandDelessert/patch-1-js-04-object-basics
Apporte plusieurs corrections au chapitre 1.4 (Object Basics)
2 parents b2b925b + f2a8ad1 commit 8aecd64

File tree

8 files changed

+98
-116
lines changed

8 files changed

+98
-116
lines changed

1-js/04-object-basics/01-object/article.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ let key = "likes birds";
131131
user[key] = true;
132132
```
133133

134-
Ici, la variable `key` peut être calculée au moment de l'exécution ou dépendre de la saisie de l'utilisateur. Et ensuite, nous l'utilisons pour accéder à la propriété. Cela nous donne beaucoup de flexibilité.
134+
Ici, la variable `key` peut être calculée au moment de l'exécution ou dépendre de la saisie de l'utilisateur. Et ensuite, nous l'utilisons pour accéder à la propriété. Cela nous donne beaucoup de flexibilité.
135135

136136
Par exemple :
137137

@@ -147,7 +147,7 @@ let key = prompt("What do you want to know about the user?", "name");
147147
alert( user[key] ); // John (si entré "name")
148148
```
149149

150-
The dot notation cannot be used in a similar way:
150+
La notation par points ne peut pas être utilisée de la même manière :
151151

152152
```js run
153153
let user = {
@@ -251,12 +251,12 @@ let user = {
251251

252252
## Limitations des noms de propriété
253253

254-
Comme nous le savons déjà, une variable ne peut pas avoir un nom égal à l'un des mots réservés au language comme "for", "let", "return" etc.
254+
Comme nous le savons déjà, une variable ne peut pas avoir un nom égal à l'un des mots réservés au langage comme "for", "let", "return" etc.
255255

256256
Mais pour une propriété d'objet, il n'y a pas de telle restriction :
257257

258258
```js run
259-
// these properties are all right
259+
// ces propriétés sont toutes correctes
260260
let obj = {
261261
for: 1,
262262
let: 2,
@@ -274,10 +274,10 @@ Par exemple, un nombre `0` devient une chaîne `"0"` lorsqu'il est utilisé comm
274274

275275
```js run
276276
let obj = {
277-
0: "test" // same as "0": "test"
277+
0: "test" // identique à "0": "test"
278278
};
279279

280-
// both alerts access the same property (the number 0 is converted to string "0")
280+
// les 2 alertes accèdent à la même propriété (le chiffre 0 est converti en string "0")
281281
alert( obj["0"] ); // test
282282
alert( obj[0] ); // test (same property)
283283
```
@@ -287,7 +287,7 @@ Il y a un problème mineur avec une propriété spéciale nommée `__proto__`. N
287287

288288
```js run
289289
let obj = {};
290-
obj.__proto__ = 5; // assign a number
290+
obj.__proto__ = 5; // assignation d'un nombre
291291
alert(obj.__proto__); // [object Object] - la valeur est un objet, n'a pas fonctionné comme prévu
292292
```
293293

@@ -336,7 +336,7 @@ alert( *!*key*/!* in user ); // true, la propriété "age" existe
336336
337337
Pourquoi l'opérateur `in` existe-t-il ? N'est-ce pas suffisant de comparer avec `undefined` ?
338338
339-
Eh bien, la plupart du temps, la comparaison avec `undefined` fonctionne bien. Mais il y a un cas particulier quand il échoue, mais `"in"`fonctionne correctement.
339+
Eh bien, la plupart du temps, la comparaison avec `undefined` fonctionne bien. Mais il y a un cas particulier quand il échoue, mais `in` fonctionne correctement.
340340
341341
C’est lorsque une propriété d’objet existe, mais qu'elle stocke undefined :
342342
@@ -363,7 +363,7 @@ Pour parcourir toutes les clés d'un objet, il existe une forme spéciale de bou
363363
La syntaxe :
364364
365365
```js
366-
for(key in object) {
366+
for (key in object) {
367367
// exécute le corps pour chaque clé parmi les propriétés de l'objet
368368
}
369369
```
@@ -377,7 +377,7 @@ let user = {
377377
isAdmin: true
378378
};
379379

380-
for(let key in user) {
380+
for (let key in user) {
381381
// keys
382382
alert( key ); // name, age, isAdmin
383383
// valeurs pour les clés
@@ -387,7 +387,7 @@ for(let key in user) {
387387
388388
Notez que toutes les constructions "for" nous permettent de déclarer la variable en boucle à l'intérieur de la boucle, comme `let key` ici.
389389
390-
En outre, nous pourrions utiliser un autre nom de variable ici au lieu de `key`. Par exemple, `"for(let prop in obj)"` est également largement utilisé.
390+
En outre, nous pourrions utiliser un autre nom de variable ici au lieu de `key`. Par exemple, `for(let prop in obj)` est également largement utilisé.
391391
392392
393393
### Ordonné comme un objet
@@ -424,7 +424,7 @@ Mais si nous exécutons ce code, nous voyons une image totalement différente :
424424
Les indicatifs de téléphone sont classés par ordre croissant, car ce sont des entiers. Donc on voit `1, 41, 44, 49`.
425425
426426
````smart header="Propriétés entier (integer properties) ? Qu'est-ce que c'est ?"
427-
Le terme "propriété entier" (integer properties) désigne ici une chaîne de caractères pouvant être convertie en un entier à partir de-et-sans modification.
427+
Le terme "propriété entier" (integer properties) désigne ici une chaîne de caractères qui peut être convertie en un nombre entier ou inversement sans changement.
428428
429429
Ainsi, `"49"` est un nom de propriété entier, parce que lorsqu'il est transformé en nombre entier et inversement, il reste identique. Mais `"+49"` et `"1.2"` ne le sont pas :
430430
@@ -485,21 +485,21 @@ Ils stockent des propriétés (paires clé-valeur), où :
485485
486486
Pour accéder à une propriété, nous pouvons utiliser :
487487
- La notation par points : `obj.property`.
488-
- Notation entre crochets `obj["property"]`. Les crochets permettent de prendre la clé d’une variable, comme `obj[varWithKey]`.
488+
- Notation entre crochets `obj["property"]`. Les crochets permettent de prendre la clé à partir d’une variable, comme `obj[varWithKey]`.
489489
490490
Opérateurs supplémentaires :
491491
- Pour supprimer une propriété : `delete obj.prop`.
492492
- Pour vérifier si une propriété avec la clé donnée existe : `"key" in obj`.
493493
- Pour parcourir un objet : la boucle `for (let key in obj)`.
494494
495-
Ce que nous avons étudié dans ce chapitre s’appelle un "objet simple" (plain object) ou juste `Object`.
495+
Ce que nous avons étudié dans ce chapitre s’appelle un "objet simple" (plain object) ou juste `Object`.
496496
Il existe de nombreux autres types d'objets en JavaScript :
497497
498498
- `Array` pour stocker des collections de données ordonnées,
499499
- `Date` pour stocker des informations sur la date et l'heure,
500500
- `Error` pour stocker des informations sur une erreur.
501-
- Etc.
501+
- Etc.
502502
503-
Ils ont leurs particularités que nous étudierons plus tard. Parfois, les gens disent quelque chose comme "Type de tableau" ou "Type de date", mais ils ne sont pas formellement propres, mais appartiennent à un seul type de données "objet". Et ils l'étendent de différentes manières.
503+
Ils ont leurs particularités que nous étudierons plus tard. Parfois, les gens disent quelque chose comme "type Tableau" ou "type Date", mais ils ne sont pas formellement propres, mais appartiennent à un seul type de données "objet". Et ils l'étendent de différentes manières.
504504
505505
Les objets en JavaScript sont très puissants. Nous venons de gratter la surface d’un sujet vraiment énorme. Nous allons travailler étroitement avec les objets et en apprendre davantage à leur sujet dans d’autres parties du tutoriel.

1-js/04-object-basics/02-object-copy/article.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ L'objet est stocké quelque part dans la mémoire (du coté droit de l'image), t
3939

4040
On peut imaginer la variable d'objet, ici `user`, comme une feuille de papier avec l'adresse de l'objet écrit dessus.
4141

42-
Lorque l'on réalise une action avec l'objet, par exemple récupérer la propriété `user.name`, le moteur de Javascript regarde à l'adresse et réalise l'opération sur l'objet actuel.
42+
Lorque l'on réalise une action avec l'objet, par exemple récupérer la propriété `user.name`, le moteur de JavaScript regarde à l'adresse et réalise l'opération sur l'objet actuel.
4343

4444
Et voilà pourquoi cela est important.
4545

@@ -152,7 +152,7 @@ for (let key in user) {
152152
// maintenant clone est un objet complétemnet indépendant avec le même contenu
153153
clone.name = "Pete"; // On change les données de celui-ci
154154
155-
alert( user.name ); // c'est toujour john dans l'objet copié
155+
alert( user.name ); // c'est toujour John dans l'objet copié
156156
```
157157
158158
On peut aussi utiliser la méthode [Object.assign](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) pour cela.
@@ -220,7 +220,7 @@ Il existe également d'autres méthodes de clonage d'un objet, par ex. en utilis
220220

221221
## Clonage imbriqué
222222

223-
Jusqu'à maintenant on suppose que toutes les propriétés de `user` sont des primitives. Mais les propriétés peuvent être des références vers d'autres objets. Comment gèrer ces cas-là ?
223+
Jusqu'à maintenant on suppose que toutes les propriétés de `user` sont des primitives. Mais les propriétés peuvent être des références vers d'autres objets. Comment gérer ces cas-là ?
224224

225225
Comme ceci :
226226
```js run
@@ -278,11 +278,11 @@ let user = {
278278
let clone = structuredClone(user);
279279
*/!*
280280

281-
alert( user.sizes === clone.sizes ); // false, different objects
281+
alert( user.sizes === clone.sizes ); // false, c'est un objet différent
282282

283-
// user and clone are totally unrelated now
284-
user.sizes.width = 60; // change a property from one place
285-
alert(clone.sizes.width); // 50, not related
283+
// user et clone n'ont plus aucun lien entre eux
284+
user.sizes.width = 60; // changer une propriété d'un endroit
285+
alert(clone.sizes.width); // 50, sans lien
286286
```
287287
288288
La méthode `structuredClone` peut cloner la plupart des types de données, tels que des objets, des tableaux, des valeurs primitives.
@@ -316,7 +316,7 @@ structuredClone({
316316
317317
Les propriétés de fonction ne sont pas prises en charge.
318318
319-
Pour gérer des cas aussi complexes, nous devrons peut-être utiliser une combinaison de méthodes de clonage, écrire du code personnalisé ou, pour ne pas réinventer la roue, prendre une implémentation existante, par exemple [_.cloneDeep(obj)](https://lodash.com /docs#cloneDeep) de la bibliothèque JavaScript [lodash](https://lodash.com).
319+
Pour gérer des cas aussi complexes, nous devrons peut-être utiliser une combinaison de méthodes de clonage, écrire du code personnalisé ou, pour ne pas réinventer la roue, prendre une implémentation existante, par exemple [_.cloneDeep(obj)](https://lodash.com/docs#cloneDeep) de la bibliothèque JavaScript [lodash](https://lodash.com).
320320
321321
## Résumé
322322

1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ C'est parce que les règles qui définissent `this` ne prennent pas en compte la
1818

1919
Ici, la valeur de `this` à l'intérieur de `makeUser()` est `undefined`, car elle est appelée en tant que fonction et non en tant que méthode avec la syntaxe au "point".
2020

21-
La valeur de `this` est un pour toute la fonction, les blocs de code et les littéraux d'objet ne l'affectent pas.
21+
La valeur de `this` est la même pour toute la fonction, les blocs de code et les littéraux d'objet ne l'affectent pas.
2222

2323
Donc `ref: this` prend actuellement le `this` courant de la fonction.
2424

@@ -53,4 +53,3 @@ alert( user.ref().name ); // John
5353
```
5454

5555
Maintenant cela fonctionne parce que `user.ref()` est une méthode. Et la valeur de `this` est définie pour l'objet avant le point `.`.
56-

1-js/04-object-basics/04-object-methods/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,14 @@ admin.f = sayHi;
198198
*/!*
199199

200200
// ces appels ont un this différent
201-
// "this" à l'intérieur de la fonction se trouve l'objet "avant le point"
201+
// "this" à l'intérieur de la fonction est l'objet "avant le point"
202202
user.f(); // John (this == user)
203203
admin.f(); // Admin (this == admin)
204204

205205
admin['f'](); // Admin (le point ou les crochets accèdent à la méthode - peu importe)
206206
```
207207

208-
La règle est simple: si `obj.f()` est appelé, alors `this` est `obj` pendant l'appel de `f`. C'est donc l'`user` ou l'`admin` dans l'exemple ci-dessus.
208+
La règle est simple : si `obj.f()` est appelé, alors `this` est `obj` pendant l'appel de `f`. C'est donc l'`user` ou l'`admin` dans l'exemple ci-dessus.
209209

210210
````smart header="Appel sans objet : `this` == undefined"
211211
Nous pouvons même appeler la fonction sans objet du tout :
@@ -220,7 +220,7 @@ sayHi(); // undefined
220220

221221
Dans ce cas, `this` est `undefined` en mode strict. Si nous essayons d'accéder à `this.name`, il y aura une erreur.
222222

223-
En mode non strict (si on oublie `use strict`), la valeur de `this` dans ce cas sera l’*objet global* (la fenêtre d’un navigateur, nous y reviendrons plus tard). Ceci est un comportement historique qui corrige `"use strict"`.
223+
En mode non strict (si on oublie `use strict`), la valeur de `this` dans ce cas sera l’*objet global* (la fenêtre d’un navigateur, nous y reviendrons plus tard). Ceci est un comportement historique que le mode strict corrige.
224224

225225
Ce genre d'appel est généralement une erreur de programmation. Si il y a un `this` dans une fonction, il s'attend à être appelée dans un contexte d'objet.
226226
````

1-js/04-object-basics/06-constructor-new/article.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
La syntaxe normale `{...}` permet de créer un seul objet. Mais souvent, nous devons créer de nombreux objets similaires, tels que plusieurs utilisateurs ou éléments de menu, etc.
44

5-
Cela peut être fait en utilisant les fonctions du constructeur et l'opérateur `"new"`.
5+
Cela peut être fait en utilisant les fonctions constructeur et l'opérateur `"new"`.
66

77
## La function constructeur
88

9-
Les fonctions du constructeur sont techniquement des fonctions habituelles. Il existe cependant deux conventions :
9+
Les fonctions constructeur sont techniquement des fonctions habituelles. Il existe cependant deux conventions :
1010

1111
1. Elles sont nommées avec une lettre majuscule en premier.
1212
2. Elles ne devraient être executées qu'avec l'opérateur `"new"`.
@@ -71,13 +71,13 @@ Si nous avons beaucoup de lignes de code concernant la création d'un seul objet
7171
7272
```js
7373
// create a function and immediately call it with new
74-
let user = new function() {
74+
let user = new function() {
7575
this.name = "John";
7676
this.isAdmin = false;
7777
7878
// ...autre code pour la création d'utilisateur
7979
// peut-être une logique complexe et des déclarations
80-
// variables locales etc
80+
// de variables locales etc.
8181
};
8282
```
8383
@@ -117,7 +117,7 @@ Nous pouvons également faire des appels `new` et réguliers pour faire la même
117117
```js run
118118
function User(name) {
119119
if (!new.target) { // si vous m'executer sans new
120-
return new User(name); // ...J'ajouterai du new pour vous
120+
return new User(name); // ...j'ajouterai un new pour vous
121121
}
122122

123123
this.name = name;
@@ -152,7 +152,7 @@ function BigUser() {
152152
return { name: "Godzilla" }; // <-- retourne cet objet
153153
}
154154

155-
alert( new BigUser().name ); // Godzilla, got that object
155+
alert( new BigUser().name ); // Godzilla, obtenu cet objet
156156
```
157157

158158
Et voici un exemple avec un `return` vide (ou nous pourrions placer une primitive après, peu importe) :
@@ -175,7 +175,7 @@ Généralement, les constructeurs n’ont pas d’instruction `return`. Nous men
175175
176176
```js
177177
let user = new User; // <-- pas de parenthèses
178-
// same as
178+
// identique à
179179
let user = new User();
180180
```
181181
@@ -213,12 +213,12 @@ john = {
213213
*/
214214
```
215215

216-
Pour créer des objets complexes, il existe une syntaxe plus avancée, [classes](info:classes), que nous allons couvrir plus tard.
216+
Pour créer des objets complexes, il existe une syntaxe plus avancée, les [classes](info:classes), que nous allons couvrir plus tard.
217217

218218
## Résumé
219219

220220
- Les fonctions constructeur ou, plus brièvement, les constructeurs, sont des fonctions normales, mais il est généralement convenu de les nommer avec une première lettre en majuscule.
221-
- Les fonctions constructeur ne doivent être appelées qu'avec `new`. Un tel appel implique la création d'un `this` vide au début et de le retourner complété à la fin.
221+
- Les fonctions constructeur ne doivent être appelées qu'avec `new`. Un tel appel implique la création d'un objet `this` vide au début de la fonction et le renvoi de l'objet complété à la fin.
222222

223223
Nous pouvons utiliser des fonctions constructeurs pour créer plusieurs objets similaires.
224224

@@ -227,5 +227,5 @@ JavaScript fournit des fonctions constructeur pour de nombreux objets intégrés
227227
```smart header="Objets, nous reviendrons !"
228228
Dans ce chapitre, nous ne couvrons que les bases sur les objets et les constructeurs. Elles sont essentielles pour en savoir plus sur les types de données et les fonctions dans les chapitres suivants.
229229
230-
Après avoir appris cela, dans le chapitre <info:object-oriented-programming> nous reviendrons aux objets et les couvrirons en profondeur, y compris l'héritage et les classes.
230+
Après avoir appris cela, nous reviendrons aux objets et les couvrirons en profondeur dans les chapitres <info:prototypes> et <info:classes>.
231231
```

0 commit comments

Comments
 (0)