Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
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.
Vous pouvez en savoir plus sur les WeakMap en lisant l'article sur les collections à clé.
Les clés des objets WeakMap sont nécessairement du type Object. Des types de données primitifs ne sont pas autorisés pour les clés (ex : un 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.
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ée 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êcherait 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 Map.
Crée un nouvel objet WeakMap.
Supprime toute valeur associée avec la clé key. WeakMap.prototype.has(key) renverra false après coup.
WeakMap.prototype.get(<var>key</var>)Renvoie la valeur associée à la clé key, ou undefined si cette clé n'est pas présente.
WeakMap.prototype.has(<var>key</var>)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>)Définit la valeur pour la clé key dans l'objet WeakMap. La valeur de retour est l'objet WeakMap.
| ECMAScript® 2027 Language Specification # sec-weakmap-objects |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 3 août 2023 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.