L'objet WeakSet permet de créer un ensemble dont les objets sont contenus avec des références faibles.

Syntaxe

new WeakSet([itérable]);

Paramètre

itérable
Si un objet itérable est présent comme argument, ses éléments seront ajoutés au nouvel objet WeakSet. null est traité comme undefined.

Exemples

Utiliser l'objet WeakSet

var ws = new WeakSet();
var toto = {};
var truc = {};

ws.add(toto);
ws.add(truc);

ws.has(toto);  // true
ws.has(truc);  // true

ws.delete(toto); // retire toto de l'ensemble
ws.has(toto);    // false, toto a été enlevé

On notera que toto !== truc. Bien que ce soient des objets similaires, ce ne sont pas les mêmes objets. Aussi, les deux sont ajoutés à l'ensemble.

Description

Les WeakSet sont des ensembles d'objets. Un objet présent dans un objet WeakSet ne peut apparaître qu'une seule fois, il est unique pour un WeakSet donné.

Les principales différences avec l'objet Set sont les suivantes :

  • Contrairement aux Sets, les WeakSets sont des ensembles uniquement constitués d'objets et ne peuvent pas contenir des valeurs de n'importe quel type.
  • L'objet WeakSet est faible : Les références vers les objets de l'ensemble sont des références faibles. Si aucune autre référence vers l'objet n'est présente en dehors du WeakSet, l'objet pourra alors être nettoyé par le ramasse-miette. Cela signifie également qu'on ne peut pas lister les objets contenus à un instant donné dans l'ensemble. Les objets WeakSets ne sont pas énumérables.

Propriétés

WeakSet.length
La valeur de la propriété length est 0.
WeakSet.prototype
Cette propriété représente le prototype pour le constructeur WeakSet. Il permet d'ajouter des propriétés pour tous les objets WeakSet.

Instances de WeakSet

Toutes les instances de WeakSet héritent de WeakSet.prototype.

Propriétés

Méthodes

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'WeakSet' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'WeakSet' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
Support simpleChrome Support complet 36Edge Support complet 12Firefox Support complet 34IE Aucun support NonOpera Support complet 23Safari Support complet 9WebView Android Support complet 37Chrome Android Support complet 36Edge Mobile Support complet 12Firefox Android Support complet 34Opera Android Support complet 23Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
new WeakSet(iterable)Chrome Support complet 38Edge Support complet 12Firefox Support complet 34IE Aucun support NonOpera Support complet 25Safari Support complet 9WebView Android Support complet 38Chrome Android Support complet 38Edge Mobile Support complet 12Firefox Android Support complet 34Opera Android Support complet 25Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
new WeakSet(null)Chrome Support complet OuiEdge Support complet 12Firefox Support complet 37IE Aucun support NonOpera ? Safari Support complet 9WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet 12Firefox Android Support complet 37Opera Android ? Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
addChrome Support complet 36Edge Support complet OuiFirefox Support complet 34IE Aucun support NonOpera Support complet 23Safari Support complet 9WebView Android Support complet 37Chrome Android Support complet 36Edge Mobile Support complet OuiFirefox Android Support complet 34Opera Android Support complet 23Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
clear
ObsolèteNon-standard
Chrome Aucun support 36 — 43Edge Aucun support NonFirefox Aucun support 34 — 46IE Aucun support NonOpera Aucun support 25 — 30Safari Aucun support NonWebView Android Aucun support 37 — 43Chrome Android Aucun support 36 — 43Edge Mobile Aucun support NonFirefox Android Aucun support 34 — 46Opera Android Aucun support 25 — 30Safari iOS Aucun support NonSamsung Internet Android Support complet Ouinodejs Aucun support Non
deleteChrome Support complet 36Edge Support complet OuiFirefox Support complet 34IE Aucun support NonOpera Support complet 23Safari Support complet 9WebView Android Support complet 37Chrome Android Support complet 36Edge Mobile Support complet OuiFirefox Android Support complet 34Opera Android Support complet 23Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
hasChrome Support complet 36Edge Support complet OuiFirefox Support complet 34IE Aucun support NonOpera Support complet 23Safari Support complet 9WebView Android Support complet 37Chrome Android Support complet 36Edge Mobile Support complet OuiFirefox Android Support complet 34Opera Android Support complet 23Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12
prototypeChrome Support complet 36Edge Support complet OuiFirefox Support complet 34IE Aucun support NonOpera Support complet 23Safari Support complet 9WebView Android Support complet 37Chrome Android Support complet 36Edge Mobile Support complet OuiFirefox Android Support complet 34Opera Android Support complet 23Safari iOS Support complet 9Samsung Internet Android Support complet Ouinodejs Support complet 0.12

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,