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/04-object-basics/01-object/article.md
+16-16Lines changed: 16 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,7 +131,7 @@ let key = "likes birds";
131
131
user[key] =true;
132
132
```
133
133
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é.
135
135
136
136
Par exemple :
137
137
@@ -147,7 +147,7 @@ let key = prompt("What do you want to know about the user?", "name");
147
147
alert( user[key] ); // John (si entré "name")
148
148
```
149
149
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 :
151
151
152
152
```js run
153
153
let user = {
@@ -251,12 +251,12 @@ let user = {
251
251
252
252
## Limitations des noms de propriété
253
253
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.
255
255
256
256
Mais pour une propriété d'objet, il n'y a pas de telle restriction :
257
257
258
258
```js run
259
-
//these properties are all right
259
+
//ces propriétés sont toutes correctes
260
260
let obj = {
261
261
for:1,
262
262
let:2,
@@ -274,10 +274,10 @@ Par exemple, un nombre `0` devient une chaîne `"0"` lorsqu'il est utilisé comm
274
274
275
275
```js run
276
276
let obj = {
277
-
0:"test"//same as "0": "test"
277
+
0:"test"//identique à "0": "test"
278
278
};
279
279
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")
281
281
alert( obj["0"] ); // test
282
282
alert( obj[0] ); // test (same property)
283
283
```
@@ -287,7 +287,7 @@ Il y a un problème mineur avec une propriété spéciale nommée `__proto__`. N
287
287
288
288
```js run
289
289
let obj = {};
290
-
obj.__proto__=5; //assign a number
290
+
obj.__proto__=5; //assignation d'un nombre
291
291
alert(obj.__proto__); // [object Object] - la valeur est un objet, n'a pas fonctionné comme prévu
292
292
```
293
293
@@ -336,7 +336,7 @@ alert( *!*key*/!* in user ); // true, la propriété "age" existe
336
336
337
337
Pourquoi l'opérateur `in` existe-t-il ? N'est-ce pas suffisant de comparer avec `undefined` ?
338
338
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.
340
340
341
341
C’est lorsque une propriété d’objet existe, mais qu'elle stocke undefined :
342
342
@@ -363,7 +363,7 @@ Pour parcourir toutes les clés d'un objet, il existe une forme spéciale de bou
363
363
La syntaxe :
364
364
365
365
```js
366
-
for(key in object) {
366
+
for(key in object) {
367
367
// exécute le corps pour chaque clé parmi les propriétés de l'objet
368
368
}
369
369
```
@@ -377,7 +377,7 @@ let user = {
377
377
isAdmin:true
378
378
};
379
379
380
-
for(let key in user) {
380
+
for(let key in user) {
381
381
// keys
382
382
alert( key ); // name, age, isAdmin
383
383
// valeurs pour les clés
@@ -387,7 +387,7 @@ for(let key in user) {
387
387
388
388
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.
389
389
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é.
391
391
392
392
393
393
### Ordonné comme un objet
@@ -424,7 +424,7 @@ Mais si nous exécutons ce code, nous voyons une image totalement différente :
424
424
Les indicatifs de téléphone sont classés par ordre croissant, car ce sont des entiers. Donc on voit `1, 41, 44, 49`.
425
425
426
426
````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.
428
428
429
429
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 :
430
430
@@ -485,21 +485,21 @@ Ils stockent des propriétés (paires clé-valeur), où :
485
485
486
486
Pour accéder à une propriété, nous pouvons utiliser :
487
487
- 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]`.
489
489
490
490
Opérateurs supplémentaires :
491
491
- Pour supprimer une propriété : `deleteobj.prop`.
492
492
- Pour vérifier si une propriété avec la clé donnée existe : `"key"in obj`.
493
493
- Pour parcourir un objet : la boucle `for (let key in obj)`.
494
494
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`.
496
496
Il existe de nombreux autres types d'objets en JavaScript :
497
497
498
498
- `Array` pour stocker des collections de données ordonnées,
499
499
- `Date` pour stocker des informations sur la date et l'heure,
500
500
- `Error` pour stocker des informations sur une erreur.
501
-
- … Etc.
501
+
- Etc.
502
502
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.
504
504
505
505
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.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/02-object-copy/article.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ L'objet est stocké quelque part dans la mémoire (du coté droit de l'image), t
39
39
40
40
On peut imaginer la variable d'objet, ici `user`, comme une feuille de papier avec l'adresse de l'objet écrit dessus.
41
41
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.
43
43
44
44
Et voilà pourquoi cela est important.
45
45
@@ -152,7 +152,7 @@ for (let key in user) {
152
152
// maintenant clone est un objet complétemnet indépendant avec le même contenu
153
153
clone.name = "Pete"; // On change les données de celui-ci
154
154
155
-
alert( user.name ); // c'est toujour john dans l'objet copié
155
+
alert( user.name ); // c'est toujour John dans l'objet copié
156
156
```
157
157
158
158
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
220
220
221
221
## Clonage imbriqué
222
222
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. Commentgè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. Commentgérer ces cas-là ?
224
224
225
225
Comme ceci :
226
226
```js run
@@ -278,11 +278,11 @@ let user = {
278
278
let clone =structuredClone(user);
279
279
*/!*
280
280
281
-
alert( user.sizes===clone.sizes ); // false, different objects
281
+
alert( user.sizes===clone.sizes ); // false, c'est un objet différent
282
282
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
286
286
```
287
287
288
288
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({
316
316
317
317
Les propriétés de fonction ne sont pas prises en charge.
318
318
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).
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/04-object-methods/4-object-property-this/solution.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ C'est parce que les règles qui définissent `this` ne prennent pas en compte la
18
18
19
19
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".
20
20
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.
22
22
23
23
Donc `ref: this` prend actuellement le `this` courant de la fonction.
24
24
@@ -53,4 +53,3 @@ alert( user.ref().name ); // John
53
53
```
54
54
55
55
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 `.`.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/04-object-methods/article.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -198,14 +198,14 @@ admin.f = sayHi;
198
198
*/!*
199
199
200
200
// 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"
202
202
user.f(); // John (this == user)
203
203
admin.f(); // Admin (this == admin)
204
204
205
205
admin['f'](); // Admin (le point ou les crochets accèdent à la méthode - peu importe)
206
206
```
207
207
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.
209
209
210
210
````smart header="Appel sans objet : `this` == undefined"
211
211
Nous pouvons même appeler la fonction sans objet du tout :
@@ -220,7 +220,7 @@ sayHi(); // undefined
220
220
221
221
Dans ce cas, `this` est `undefined` en mode strict. Si nous essayons d'accéder à `this.name`, il y aura une erreur.
222
222
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.
224
224
225
225
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.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/06-constructor-new/article.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,11 @@
2
2
3
3
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.
4
4
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"`.
6
6
7
7
## La function constructeur
8
8
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 :
10
10
11
11
1. Elles sont nommées avec une lettre majuscule en premier.
12
12
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
71
71
72
72
```js
73
73
// create a function and immediately call it with new
74
-
let user = new function() {
74
+
let user = new function() {
75
75
this.name = "John";
76
76
this.isAdmin = false;
77
77
78
78
// ...autre code pour la création d'utilisateur
79
79
// peut-être une logique complexe et des déclarations
80
-
// variables locales etc
80
+
// de variables locales etc.
81
81
};
82
82
```
83
83
@@ -117,7 +117,7 @@ Nous pouvons également faire des appels `new` et réguliers pour faire la même
117
117
```js run
118
118
functionUser(name) {
119
119
if (!new.target) { // si vous m'executer sans new
120
-
returnnewUser(name); // ...J'ajouterai du new pour vous
120
+
returnnewUser(name); // ...j'ajouterai un new pour vous
121
121
}
122
122
123
123
this.name= name;
@@ -152,7 +152,7 @@ function BigUser() {
152
152
return { name:"Godzilla" }; // <-- retourne cet objet
153
153
}
154
154
155
-
alert( newBigUser().name ); // Godzilla, got that object
155
+
alert( newBigUser().name ); // Godzilla, obtenu cet objet
156
156
```
157
157
158
158
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
175
175
176
176
```js
177
177
let user = new User; // <-- pas de parenthèses
178
-
// same as
178
+
// identique à
179
179
let user = new User();
180
180
```
181
181
@@ -213,12 +213,12 @@ john = {
213
213
*/
214
214
```
215
215
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.
217
217
218
218
## Résumé
219
219
220
220
- 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.
222
222
223
223
Nous pouvons utiliser des fonctions constructeurs pour créer plusieurs objets similaires.
224
224
@@ -227,5 +227,5 @@ JavaScript fournit des fonctions constructeur pour de nombreux objets intégrés
227
227
```smart header="Objets, nous reviendrons !"
228
228
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.
229
229
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>.
0 commit comments