From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../objets_globaux/weakmap/clear/index.html | 52 +++++++ .../objets_globaux/weakmap/delete/index.html | 78 ++++++++++ .../objets_globaux/weakmap/get/index.html | 79 ++++++++++ .../objets_globaux/weakmap/has/index.html | 79 ++++++++++ .../reference/objets_globaux/weakmap/index.html | 163 +++++++++++++++++++++ .../objets_globaux/weakmap/prototype/index.html | 81 ++++++++++ .../objets_globaux/weakmap/set/index.html | 90 ++++++++++++ 7 files changed, 622 insertions(+) create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/clear/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/delete/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/get/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/has/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/prototype/index.html create mode 100644 files/fr/web/javascript/reference/objets_globaux/weakmap/set/index.html (limited to 'files/fr/web/javascript/reference/objets_globaux/weakmap') diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/clear/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/clear/index.html new file mode 100644 index 0000000000..408fd7a539 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/clear/index.html @@ -0,0 +1,52 @@ +--- +title: WeakMap.prototype.clear() +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/clear +tags: + - JavaScript + - Méthode + - Obsolete + - Prototype + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +--- +
{{JSRef}} {{obsolete_header}}
+ +

La méthode clear() permettait de retirer tous les éléments d'un objet WeakMap mais celle-ci ne fait plus partie d'ECMAScript.

+ +

Syntaxe

+ +
wm.clear();
+ +

Exemples

+ +
var wm = new WeakMap();
+var obj = {};
+
+wm.set(obj, "toto");
+wm.set(window, "truc");
+
+wm.has(obj); // true
+wm.has(window); // true
+
+wm.clear();
+
+wm.has(obj);  // false
+wm.has(window);  // false
+
+ +

Spécifications

+ +

Cette méthode ne fait partie d'aucune spécification ou brouillon. Cette méthode a fait partie du brouillon ECMAScript 6 jusqu'à la révision 28 (version du 14 octobre 2014) mais a été retiré par la suite. Cette méthode ne fait pas partie du standard final.

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.clear")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/delete/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/delete/index.html new file mode 100644 index 0000000000..56f16a93e9 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/delete/index.html @@ -0,0 +1,78 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/delete +tags: + - ECMAScript 2015 + - JavaScript + - Méthode + - Prototype + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +
{{JSRef}}
+ +

La méthode delete() retire un élément donné de l'objet {{jsxref("WeakMap")}}.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-delete.html")}}
+ + + +

Syntaxe

+ +
wm.delete(clé);
+ +

Paramètre

+ +
+
clé
+
Il correspond à la clé de l'élément qu'on souhaite retirer de l'objet WeakMap.
+
+ +

Valeur de retour

+ +

true si un élément de l'objet WeakMap a bien été retiré, false si la clé n'a pas été trouvée ou si la clé n'est pas un objet.

+ +

Exemples

+ +
var wm = new WeakMap();
+wm.set(window, "toto");
+
+wm.delete(window); // Renvoie true. La suppression a bien eu lieu.
+
+wm.has(window);    // Renvoie false. L'objet window n'est plus dans la WeakMap.
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ES2015')}}Définition initiale
{{SpecName('ESDraft', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.delete")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/get/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/get/index.html new file mode 100644 index 0000000000..88e13f92f3 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/get/index.html @@ -0,0 +1,79 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/get +tags: + - ECMAScript 2015 + - JavaScript + - Méthode + - Prototype + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +
{{JSRef}}
+ +

La méthode get() permet de renvoyer un élément donné d'un objet WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-get.html")}}
+ + + +

Syntaxe

+ +
wm.get(clé);
+ +

Paramètre

+ +
+
clé
+
Ce paramètre est obligatoire. Il correspond à la clé de l'élément qu'on souhaite récupérer depuis l'objet WeakMap.
+
+ +

Valeur de retour

+ +

L'élément associé à la clé donnée ou undefined si la clé ne peut pas être trouvée dans l'objet WeakMap.

+ +

Exemples

+ +
var wm = new WeakMap();
+wm.set(window, "toto");
+
+wm.get(window); // Renvoie "toto"
+wm.get("machin");  // Renvoie undefined.
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.get")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/has/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/has/index.html new file mode 100644 index 0000000000..6499d58bb7 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/has/index.html @@ -0,0 +1,79 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/has +tags: + - ECMAScript 2015 + - JavaScript + - Méthode + - Prototype + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +
{{JSRef}}
+ +

La méthode has() renvoie un booléen qui indique s'il existe (ou non) un élément avec une clé donnée au sein de l'objet WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-has.html")}}
+ + + +

Syntaxe

+ +
wm.has(clé);
+ +

Paramètre

+ +
+
clé
+
Ce paramètre est obligatoire. Il correspond à la clé de l'élément dont on souhaite savoir s'il est présent dans l'objet WeakMap.
+
+ +

Valeur de retour

+ +

La méthode renvoie true s'il existe un élément du WeakMap avec la clé donné, false sinon.

+ +

Exemples

+ +
var wm = new WeakMap();
+wm.set(window, "toto");
+
+wm.has(window); // renvoie true
+wm.has("machin");  // renvoie false
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.has")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/index.html new file mode 100644 index 0000000000..27589afd41 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/index.html @@ -0,0 +1,163 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap +tags: + - ECMAScript 2015 + - JavaScript + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/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é.

+
+ +

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")}}.
+
+ +

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 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.

+ +

Pourquoi WeakMap ?

+ +

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")}}.

+ +

Propriété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.
+
+ +

Instances de WeakMap

+ +

Toutes les instances de WeakMap héritent de {{jsxref("WeakMap.prototype")}}.

+ +

Propriétés

+ +

{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakMap/prototype','Properties')}}

+ +

Méthodes

+ +

{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakMap/prototype','Methods')}}

+ +

Exemples

+ +

Utiliser WeakMap

+ +
var wm1 = new WeakMap(),
+    wm2 = new WeakMap(),
+    wm3 = new WeakMap();
+var o1 = {},
+    o2 = function(){},
+    o3 = window;
+
+wm1.set(o1, 37);
+wm1.set(o2, "azerty");
+wm2.set(o1, o2); // une valeur peut être n'importe quoi, y compris un objet ou une fonction
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // Les clés et les valeurs peuvent n'importe quels objets, y compris des WeakMap
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // undefined car il n'y a pas de valeur pour o2 sur wm2
+wm2.get(o3); // undefined car c'est la valeur utilisée
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (même si la valeur est 'undefined')
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+
+wm1.has(o1);   // true
+wm1.delete(o1);
+wm1.has(o1);   // false
+
+
+ +

Implémenter une classe semblable à WeakMap avec une méthode .clear()

+ +
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
+    }
+}
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ESDraft')}}
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Définition initiale.
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/prototype/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/prototype/index.html new file mode 100644 index 0000000000..e63090051e --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/prototype/index.html @@ -0,0 +1,81 @@ +--- +title: WeakMap.prototype +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/prototype +tags: + - ECMAScript 2015 + - JavaScript + - Propriété + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef}}
+ +

La propriété WeakMap.prototype représente le prototype du constructeur {{jsxref("WeakMap")}}.

+ +
{{js_property_attributes(0,0,0)}}
+ +

Description

+ +

Les instances de {{jsxref("WeakMap")}} héritent de {{jsxref("WeakMap.prototype")}}. L'objet prototype du constructeur peut donc être utilisé pour ajouter des propriétés et/ou des méthodes pour toutes les instances de WeakMap.

+ +

WeakMap.prototype est un objet ordinaire :

+ +
Object.prototype.toString.call(WeakMap.prototype); // "[object Object]"
+
+ +

Propriétés

+ +
+
WeakMap.prototype.constructor
+
Renvoie la fonction qui a créé le prototype de l'instance. Par défaut, ce sera la fonction {{jsxref("WeakMap")}}.
+
+ +

Méthodes

+ +
+
{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(clé)")}}
+
Retire la valeur associée à la clé clé. WeakMap.prototype.has(clé) renverra false une fois la valeur supprimée.
+
{{jsxref("WeakMap.get", "WeakMap.prototype.get(clé)")}}
+
Renvoie la valeur associée à la clé, ou undefined s'il n'y en a pas.
+
{{jsxref("WeakMap.has", "WeakMap.prototype.has(clé)")}}
+
Renvoie un booléen qui indique s'il existe ou non une valeur associée à une clé donnée pour l'objet WeakMap.
+
{{jsxref("WeakMap.set", "WeakMap.prototype.set(clé, valeur)")}}
+
Définit la valeur associée à la clé dans l'objet WeakMap. La méthode renvoie l'objet WeakMap.
+
{{jsxref("WeakMap.prototype.clear()")}} {{obsolete_inline}}
+
Retire toutes les paires de clés/valeurs contenues dans l'objet WeakMap. Il est possible de construire un objet semblable à WeakMap qui possède une méthode clear() en encapsulant (cf. l'exemple sur la page {{jsxref("WeakMap")}}).
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-weakmap.prototype', 'WeakMap.prototype')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.prototype")}}

+ +

Voir aussi

+ + diff --git a/files/fr/web/javascript/reference/objets_globaux/weakmap/set/index.html b/files/fr/web/javascript/reference/objets_globaux/weakmap/set/index.html new file mode 100644 index 0000000000..8754e8acc7 --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/weakmap/set/index.html @@ -0,0 +1,90 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Reference/Objets_globaux/WeakMap/set +tags: + - ECMAScript 2015 + - JavaScript + - Méthode + - Prototype + - Reference + - WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +
s{{JSRef}}
+ +

La méthode set() permet d'ajouter un nouvel élément avec une clé et une valeur à un objet WeakMap.

+ +
{{EmbedInteractiveExample("pages/js/weakmap-prototype-set.html")}}
+ + + +

Syntaxe

+ +
wm.set(clé, valeur);
+ +

Paramètres

+ +
+
clé
+
Ce paramètre est obligatoire et doit être un objet. Il correspond à la clé de l'élément qu'on souhaite ajouter à l'objet WeakMap.
+
valeur
+
Ce paramètre est obligatoire et peut avoir n'importe quel type. Il correspond à la valeur de l'élément qu'on souhaite ajouter à l'objet WeakMap.
+
+ +

Valeur de retour

+ +

Cette méthode renvoie l'objet WeakMap potentiellement mis à jour.

+ +

Exemples

+ +
var wm = new WeakMap();
+var obj = {};
+
+// Ajouter un nouvel élément à la WeakMap
+wm.set(obj, "toto").set(window, "truc"); // on peut chaîner les instructions
+
+// Mettre à jour un élément de la WeakMap
+wm.set(obj, "machin");
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES2015', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ES2015')}}Définition initiale.
{{SpecName('ESDraft', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}{{Spec2('ESDraft')}}
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.WeakMap.set")}}

+ +

Notes relatives à Firefox

+ + + +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf