|
1 | | -<<<<<<< HEAD |
2 | 1 | # WeakMap et WeakSet |
3 | | -======= |
4 | | - |
5 | | -# WeakMap and WeakSet |
6 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
7 | 2 |
|
8 | 3 | Comme nous le savons du chapitre <info:garbage-collection>, le moteur JavaScript stocke une valeur en mémoire pendant qu'elle est accessible et peut potentiellement être utilisée. |
9 | 4 |
|
10 | 5 | Par exemple : |
11 | 6 |
|
12 | | -<<<<<<< HEAD |
13 | | -======= |
14 | | -For instance: |
15 | | - |
16 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
17 | 7 | ```js |
18 | 8 | let john = { name: "John" }; |
19 | 9 |
|
@@ -65,21 +55,13 @@ john = null; // écraser la référence |
65 | 55 | */!* |
66 | 56 | ``` |
67 | 57 |
|
68 | | -<<<<<<< HEAD |
69 | | -`WeakMap` est fondamentalement différent dans cet aspect. Il n'empêche pas le nettoyage des clés objets. |
70 | | -======= |
71 | | -[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is fundamentally different in this aspect. It doesn't prevent garbage-collection of key objects. |
72 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
| 58 | +[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) est fondamentalement différent à cet égard. Cela n'empêche pas le garbage collection des objets clés. |
73 | 59 |
|
74 | 60 | Voyons ce que cela signifie sur des exemples. |
75 | 61 |
|
76 | 62 | ## WeakMap |
77 | 63 |
|
78 | | -<<<<<<< HEAD |
79 | | -La première différence entre `Map` et `WeakMap` est que les clés doivent être des objets, pas des valeurs primitives : |
80 | | -======= |
81 | | -The first difference between [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is that keys must be objects, not primitive values: |
82 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
| 64 | +La première différences entre [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) et [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) est que les clés doivent être des objets, pas des valeurs primitives : |
83 | 65 |
|
84 | 66 | ```js run |
85 | 67 | let weakMap = new WeakMap(); |
@@ -263,19 +245,11 @@ obj = null; |
263 | 245 |
|
264 | 246 | ## WeakSet |
265 | 247 |
|
266 | | -<<<<<<< HEAD |
267 | 248 | `WeakSet` se comporte de la même manière : |
268 | 249 |
|
269 | 250 | - Il est analogue à `Set`, mais nous pouvons seulement ajouter des objets à `WeakSet` (pas de primitives). |
270 | 251 | - Un objet existe dans le set tant qu'il est accessible ailleurs. |
271 | | -- Comme `Set`, il prend en charge `add`, `has` et `delete`, mais pas `size`, `keys()` et aucune itération. |
272 | | -======= |
273 | | -[`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) behaves similarly: |
274 | | - |
275 | | -- It is analogous to `Set`, but we may only add objects to `WeakSet` (not primitives). |
276 | | -- An object exists in the set while it is reachable from somewhere else. |
277 | | -- Like `Set`, it supports [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) and [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), but not `size`, `keys()` and no iterations. |
278 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
| 252 | +- Comme `Set`, il prend en charge [`add`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/add), [`has`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/has) et [`delete`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Weakset/delete), mais pas `size`, `keys()` et aucune itération. |
279 | 253 |
|
280 | 254 | Étant "weak" (faible), il sert également de stockage supplémentaire. Mais pas pour des données arbitraires, mais plutôt pour des faits "oui/non". Une appartenance à `WeakSet` peut signifier quelque chose à propos de l'objet. |
281 | 255 |
|
@@ -309,15 +283,10 @@ La limitation la plus notable de `WeakMap` et `WeakSet` est l'absence d'itérati |
309 | 283 |
|
310 | 284 | ## Résumé |
311 | 285 |
|
312 | | -<<<<<<< HEAD |
313 | | -`WeakMap` est une sorte de collection `Map` qui n'autorise que des objets comme clés et les supprime avec la valeur associée une fois qu'ils deviennent inaccessibles par d'autres moyens. |
| 286 | +[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) est une sorte de collection `Map` qui n'autorise que des objets comme clés et les supprime avec la valeur associée une fois qu'ils deviennent inaccessibles par d'autres moyens. |
314 | 287 |
|
315 | | -`WeakSet` est une sorte de collection `Set` qui ne stocke que des objets et les supprime une fois qu'ils deviennent inaccessibles par d'autres moyens. |
316 | | -======= |
317 | | -[`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) is `Map`-like collection that allows only objects as keys and removes them together with associated value once they become inaccessible by other means. |
318 | 288 |
|
319 | | -[`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) is `Set`-like collection that stores only objects and removes them once they become inaccessible by other means. |
320 | | ->>>>>>> 285083fc71ee3a7cf55fd8acac9c91ac6f62105c |
| 289 | +[`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) est une sorte de collection `Set` qui ne stocke que des objets et les supprime une fois qu'ils deviennent inaccessibles par d'autres moyens. |
321 | 290 |
|
322 | 291 | Leurs principaux avantages sont qu'ils ont une faible référence aux objets, de sorte qu'ils peuvent facilement être supprimés par le garbage collector. |
323 | 292 |
|
|
0 commit comments