aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects
diff options
context:
space:
mode:
authorSphinxKnight <SphinxKnight@users.noreply.github.com>2021-11-01 07:45:01 +0100
committerGitHub <noreply@github.com>2021-11-01 07:45:01 +0100
commitf1b13e99424ad978eec91faf73b9e27b7ce96ad6 (patch)
tree5bd83799baf8dee4a0ed6ebc6a109c993dea7439 /files/fr/web/javascript/reference/global_objects
parent3288fd36f8520b75592b24ceac16f36fec654cc4 (diff)
downloadtranslated-content-f1b13e99424ad978eec91faf73b9e27b7ce96ad6.tar.gz
translated-content-f1b13e99424ad978eec91faf73b9e27b7ce96ad6.tar.bz2
translated-content-f1b13e99424ad978eec91faf73b9e27b7ce96ad6.zip
Fixes #2127 by updating vs en-US (+ removes xref macros) (#2334)
Diffstat (limited to 'files/fr/web/javascript/reference/global_objects')
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakmap/index.md106
1 files changed, 47 insertions, 59 deletions
diff --git a/files/fr/web/javascript/reference/global_objects/weakmap/index.md b/files/fr/web/javascript/reference/global_objects/weakmap/index.md
index ab6d2c13cd..e37d4ae5fd 100644
--- a/files/fr/web/javascript/reference/global_objects/weakmap/index.md
+++ b/files/fr/web/javascript/reference/global_objects/weakmap/index.md
@@ -1,61 +1,51 @@
---
title: WeakMap
slug: Web/JavaScript/Reference/Global_Objects/WeakMap
-tags:
- - ECMAScript 2015
- - JavaScript
- - Reference
- - WeakMap
translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap
original_slug: Web/JavaScript/Reference/Objets_globaux/WeakMap
+browser-compat: javascript.builtins.WeakMap
---
{{JSRef}}
L'objet **`WeakMap`** représente une collection de paires clé-valeur dont les clés sont des objets et pour lesquelles les références sont « faibles » et les valeurs des valeurs quelconques.
-> **Note :** vous pouvez en savoir plus sur les `WeakMap` en lisant l'article sur [les collections à clé](/fr/docs/Web/JavaScript/Guide/Collections_avec_clés#Le_type_WeakMap).
-
-## Syntaxe
-
- new WeakMap([itérable])
-
-### Paramètres
-
-- `itérable`
- - : Paramètre optionnel. Un tableau (objet `Array`) ou tout autre objet itérable dont les éléments sont des paires composées d'une clé et d'une valeur (des tableaux de 2 éléments). Chaque paire sera ajoutée à la carte (_map_ en anglais). {{jsxref("null")}} sera traité comme {{jsxref("undefined")}}.
+Vous pouvez en savoir plus sur les `WeakMap` en lisant l'article sur [les collections à clé](/fr/docs/Web/JavaScript/Guide/Keyed_collections).
## Description
-Les clés des objets `WeakMap` sont nécessairement du type `Object`. {{Glossary("Primitive", "Des types de données primitifs")}} ne sont pas autorisés pour les clés (ex : un {{jsxref("Symbol")}} ne peut pas être une clé dans un `WeakMap`).
+Les clés des objets `WeakMap` sont nécessairement du type `Object`. {{Glossary("Primitive", "Des types de données primitifs")}} ne sont pas autorisés pour les clés (ex : un [`Symbol`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Symbol) ne peut pas être une clé dans un `WeakMap`).
-Les clés d'une `WeakMap` sont référencées _faiblement_. Cela signifie que s'il n'existe aucune autre référence « forte » vers la clé, l'élément (la clé et la valeur) sera retiré de la `WeakMap` par le ramasse-miettes.
+Les clés d'une `WeakMap` sont référencées _faiblement_. Cela signifie que s'il n'existe aucune autre référence «&nbsp;forte&nbsp;» vers la clé, l'élément (la clé et la valeur) sera retiré de la `WeakMap` par le ramasse-miettes.
### Pourquoi *Weak*Map ?
Avec un certain recul, on peut voir que cette API aurait pu être implémentée en JavaScript grâce à deux tableaux (un tableau pour stocker les clés, l'autre pour les valeurs) associées à 4 méthodes.
-Une telle implémentation présente deux inconvénients principaux. Le premier est que la recherche serait effectué en O(n) (avec n le nombre de clés). Le second inconvénient concerne les fuites mémoires. Si la carte (_map_) est construite manuellement, le tableau contenant les clés serait obligé de garder les références vers les objets que sont les clés, ce qui les empêcheraient d'être nettoyés par le ramasse-miette. Grâce aux objets natifs `WeakMap`, les références vers les clés sont faibles (_weak_) ce qui permet au ramasse miette de nettoyer l'objet au cas où il n'y aurait pas d'autres références vers cet objet.
-
-Étant donné que les références sont faibles, il est impossible d'énumérer les clés des objets `WeakMap` (c'est-à-dire qu'on ne dispose pas d'une méthode renvoyant la liste des clés). Si c'était le cas, la liste dépendrait d'un état lié au ramasse-miette et il n'y aurait pas de façon déterministe de connaître le résultat. Si vous souhaitez avoir une liste de clés, vous devriez plutôt utiliser un objet {{jsxref("Map")}}.
+Une telle implémentation présente deux inconvénients principaux :
-## Propriétés
+1. Le premier est que la recherche serait effectuée en O(n) (avec n le nombre de clés).
-- `WeakMap.length`
- - : La valeur de la propriété `length` vaut 0.
-- {{jsxref("WeakMap.prototype")}}
- - : Cette propriété représente le prototype du constructeur `WeakMap`. Il permet d'ajouter des propriétés pour toutes les instances de `WeakMap`.
+2. Le second inconvénient concerne les fuites mémoires. Si la carte (_map_) est construite manuellement, le tableau contenant les clés serait obligé de garder les références vers les objets que sont les clés, ce qui les empêcherait d'être nettoyés par le ramasse-miette.
-## Instances de `WeakMap`
+Grâce aux objets natifs `WeakMap`, les références vers les clés sont faibles (_weak_) ce qui permet au ramasse-miette de nettoyer l'objet au cas où il n'y aurait pas d'autres références vers cet objet.
-Toutes les instances de `WeakMap` héritent de {{jsxref("WeakMap.prototype")}}.
+**Étant donné que les références sont faibles, il est impossible d'énumérer les clés des objets `WeakMap`** (c'est-à-dire qu'on ne dispose pas d'une méthode renvoyant la liste des clés). Si c'était le cas, la liste dépendrait d'un état lié au ramasse-miette et il n'y aurait pas de façon déterministe de connaître le résultat. Si vous souhaitez avoir une liste de clés, vous devriez plutôt utiliser un objet [`Map`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Map).
-### Propriétés
+## Constructeur
-{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakMap/prototype','Properties')}}
+- [`WeakMap()`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/WeakMap)
+ - : Crée un nouvel objet `WeakMap`.
-### Méthodes
+## Méthodes des instances
-{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakMap/prototype','Methods')}}
+- [`WeakMap.prototype.delete(<var>key</var>)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete)
+ - : Supprime toute valeur associée avec la clé `key`. `WeakMap.prototype.has(key)` renverra `false` après coup.
+- [`WeakMap.prototype.get(<var>key</var>)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get)
+ - : Renvoie la valeur associée à la clé `key`, ou `undefined` si cette clé n'est pas présente.
+- [`WeakMap.prototype.has(<var>key</var>)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has)
+ - : Renvoie un booléen indiquant s'il existe une valeur pour la clé `key` au sein de l'objet `WeakMap`.
+- [`WeakMap.prototype.set(<var>key</var>, <var>value</var>)`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set)
+ - : Définit la valeur pour la clé `key` dans l'objet `WeakMap`. La valeur de retour est l'objet `WeakMap`.
## Exemples
@@ -95,43 +85,41 @@ wm1.has(o1); // false
```js
class ClearableWeakMap {
- constructor(init) {
- this._wm = new WeakMap(init)
- }
- clear() {
- this._wm = new WeakMap()
- }
- delete(k) {
- return this._wm.delete(k)
- }
- get(k) {
- return this._wm.get(k)
- }
- has(k) {
- return this._wm.has(k)
- }
- set(k, v) {
- this._wm.set(k, v)
- return this
- }
+ constructor(init) {
+ this._wm = new WeakMap(init)
+ }
+ clear() {
+ this._wm = new WeakMap()
+ }
+ delete(k) {
+ return this._wm.delete(k)
+ }
+ get(k) {
+ return this._wm.get(k)
+ }
+ has(k) {
+ return this._wm.has(k)
+ }
+ set(k, v) {
+ this._wm.set(k, v)
+ return this
+ }
}
```
## Spécifications
-| Spécification | État | Commentaires |
-| ---------------------------------------------------------------------------- | ---------------------------- | -------------------- |
-| {{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}} | {{Spec2('ESDraft')}} | |
-| {{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}} | {{Spec2('ES2015')}} | Définition initiale. |
+{{Specifications}}
## Compatibilité des navigateurs
-{{Compat("javascript.builtins.WeakMap")}}
+{{Compat}}
## Voir aussi
-- [Le guide sur les collections à clé JavaScript](/fr/docs/Web/JavaScript/Guide/Collections_avec_clés#Le_type_WeakMap)
+- Une prothèse (*polyfill*) de `WeakMap` est disponible dans [`core-js`](https://github.com/zloirock/core-js#weakmap)
+- [Le guide sur les collections à clé JavaScript](/fr/docs/Web/JavaScript/Guide/Keyed_collections)
- [Masquer des détails d'implémentation avec les WeakMaps ECMAScript 2015](https://fitzgeraldnick.com/weblog/53/) (en anglais)
-- {{jsxref("Map")}}
-- {{jsxref("Set")}}
-- {{jsxref("WeakSet")}}
+- [`Map`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Map)
+- [`Set`](/fr/docs/Web/JavaScript/Reference/Global_Objects/Set)
+- [`WeakSet`](/fr/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)