aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/weakset
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/javascript/reference/global_objects/weakset')
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakset/add/index.html84
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakset/clear/index.html48
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakset/delete/index.html82
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakset/has/index.html83
-rw-r--r--files/fr/web/javascript/reference/global_objects/weakset/index.html146
5 files changed, 443 insertions, 0 deletions
diff --git a/files/fr/web/javascript/reference/global_objects/weakset/add/index.html b/files/fr/web/javascript/reference/global_objects/weakset/add/index.html
new file mode 100644
index 0000000000..d965e5b8ac
--- /dev/null
+++ b/files/fr/web/javascript/reference/global_objects/weakset/add/index.html
@@ -0,0 +1,84 @@
+---
+title: WeakSet.prototype.add()
+slug: Web/JavaScript/Reference/Objets_globaux/WeakSet/add
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Méthode
+ - Prototype
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/add
+---
+<div>{{JSRef}}</div>
+
+<p>La méthode <code><strong>add()</strong></code> permet d'ajouter un nouvel objet à un objet <code>WeakSet</code>.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-add.html", "taller")}}</div>
+
+<p class="hidden">Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> et à envoyer une <em>pull request</em> !</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox"><var>ws</var>.add(<var>valeur</var>);</pre>
+
+<h3 id="Paramètres">Paramètres</h3>
+
+<dl>
+ <dt><code>valeur</code></dt>
+ <dd>Ce paramètre est obligatoire. Il correspond à l'objet qu'on souhaite ajouter à l'ensemble<code> WeakSet</code>.</dd>
+</dl>
+
+<h3 id="Valeur_de_retour">Valeur de retour</h3>
+
+<p>L'objet {{jsxref("WeakSet")}}.</p>
+
+<h2 id="Exemples">Exemples</h2>
+
+<pre class="brush: js">var ws = new WeakSet();
+
+ws.add(window); // on ajouter l'objet window à l'objet WeakSet
+
+ws.has(window); // tru
+
+// WeakSet ne peut contenir que des objets
+ws.add(1);
+// TypeError: Invalid value used in weak set -&gt; Chrome
+// TypeError: 1 is not a non-null obect -&gt; Firefox
+</pre>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spécification</th>
+ <th scope="col">État</th>
+ <th scope="col">Commentaires</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Définition initiale.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.add")}}</p>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+ <li>{{jsxref("WeakSet.prototype.has()")}}</li>
+</ul>
diff --git a/files/fr/web/javascript/reference/global_objects/weakset/clear/index.html b/files/fr/web/javascript/reference/global_objects/weakset/clear/index.html
new file mode 100644
index 0000000000..b1a480bef3
--- /dev/null
+++ b/files/fr/web/javascript/reference/global_objects/weakset/clear/index.html
@@ -0,0 +1,48 @@
+---
+title: WeakSet.prototype.clear()
+slug: Web/JavaScript/Reference/Objets_globaux/WeakSet/clear
+tags:
+ - JavaScript
+ - Méthode
+ - Obsolete
+ - Prototype
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/clear
+---
+<div>{{JSRef}}{{obsolete_header}}</div>
+
+<p>La méthode <code><strong>clear()</strong></code> permettait de retirer tous les éléments d'un objet <code>WeakSet</code> mais celle-ci ne fait plus partie d'ECMAScript.</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox"><var>ws</var>.clear();</pre>
+
+<h2 id="Exemples">Exemples</h2>
+
+<pre class="brush: js example-bad">var ws = new WeakSet();
+
+ws.add(window);
+ws.has(window); // true
+
+ws.clear();
+
+ws.has(window); // false
+</pre>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<p>Cette méthode ne fait partie d'aucune spécification ou brouillon. Cette méthode faisait partie du brouillon pour ECMAScript 6 jusqu'à la révision 28 (version en date du 14 octobre 2014) mais a été retirée par la suite. Elle ne fera pas partie du standard final.</p>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.clear")}}</p>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+</ul>
diff --git a/files/fr/web/javascript/reference/global_objects/weakset/delete/index.html b/files/fr/web/javascript/reference/global_objects/weakset/delete/index.html
new file mode 100644
index 0000000000..e3cc7e72ba
--- /dev/null
+++ b/files/fr/web/javascript/reference/global_objects/weakset/delete/index.html
@@ -0,0 +1,82 @@
+---
+title: WeakSet.prototype.delete()
+slug: Web/JavaScript/Reference/Objets_globaux/WeakSet/delete
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Méthode
+ - Prototype
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/delete
+---
+<div>{{JSRef}}</div>
+
+<p>La méthode <code><strong>delete()</strong></code> permet de retirer un élément donné d'un objet <code>WeakSet</code>.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-delete.html")}}</div>
+
+<p class="hidden">Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> et à envoyer une <em>pull request</em> !</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox"><var>ws</var>.delete(<var>valeur</var>);</pre>
+
+<h3 id="Paramètre">Paramètre</h3>
+
+<dl>
+ <dt><code>valeur</code></dt>
+ <dd>Ce paramètre est obligatoire. Il correspond à l'objet qu'on souhaite retirer de l'ensemble <code>WeakSet</code>.</dd>
+</dl>
+
+<h3 id="Valeur_de_retour">Valeur de retour</h3>
+
+<p><code>true</code> si un élément de l'objet <code>WeakSet</code> a bien été retiré, <code>false</code> sinon (dans le cas où la clé n'a pas été trouvée ou si la clé n'est pas un objet).</p>
+
+<h2 id="Exemples">Exemples</h2>
+
+<pre class="brush: js">var ws = new WeakSet();
+var obj = {};
+
+ws.add(window);
+
+ws.delete(obj); // Renvoie false. Aucun objet obj n'a été trouvé ni retiré.
+ws.delete(window); // Renvoie true, l'objet window a pu être retiré.
+
+ws.has(window); // Renvoie false, window n'appartient plus au WeakSet.
+</pre>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spécification</th>
+ <th scope="col">État</th>
+ <th scope="col">Commentaires</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Définition initiale.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.delete")}}</p>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.clear()")}}</li>
+</ul>
diff --git a/files/fr/web/javascript/reference/global_objects/weakset/has/index.html b/files/fr/web/javascript/reference/global_objects/weakset/has/index.html
new file mode 100644
index 0000000000..c4cd1f5eae
--- /dev/null
+++ b/files/fr/web/javascript/reference/global_objects/weakset/has/index.html
@@ -0,0 +1,83 @@
+---
+title: WeakSet.prototype.has()
+slug: Web/JavaScript/Reference/Objets_globaux/WeakSet/has
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Méthode
+ - Prototype
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/has
+---
+<div>{{JSRef}}</div>
+
+<p>La méthode <code><strong>has()</strong></code> renvoie un booléen indiquant si un objet donné est contenu dans l'ensemble<code> WeakSet</code>.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/weakset-prototype-has.html")}}</div>
+
+<p class="hidden">Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> et à envoyer une <em>pull request</em> !</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox"><var>ws</var>.has(<var>valeur</var>);</pre>
+
+<h3 id="Paramètres">Paramètres</h3>
+
+<dl>
+ <dt><code>valeur</code></dt>
+ <dd>Ce paramètre est obligatoire. Il représente l'objet dont on souhaite savoir s'il est, ou non, présent dans l'objet <code>WeakSet</code>.</dd>
+</dl>
+
+<h3 id="Valeur_renvoyée">Valeur renvoyée</h3>
+
+<dl>
+ <dt>Booléen</dt>
+ <dd>La méthode renvoie <code>true</code> si l'objet <code>WeakSet </code>contient bien un élément avec la valeur donnée, <code>false </code>sinon.</dd>
+</dl>
+
+<h2 id="Exemples">Exemples</h2>
+
+<pre class="brush: js">var ws = new WeakSet();
+var obj = {};
+ws.add(window);
+
+mySet.has(window); // renvoie true
+mySet.has(obj); // renvoie false
+</pre>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spécification</th>
+ <th scope="col">État</th>
+ <th scope="col">Commentaires</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Définition initiale.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.WeakSet.has")}}</p>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("WeakSet")}}</li>
+ <li>{{jsxref("WeakSet.prototype.add()")}}</li>
+ <li>{{jsxref("WeakSet.prototype.delete()")}}</li>
+</ul>
diff --git a/files/fr/web/javascript/reference/global_objects/weakset/index.html b/files/fr/web/javascript/reference/global_objects/weakset/index.html
new file mode 100644
index 0000000000..fd72c59ba4
--- /dev/null
+++ b/files/fr/web/javascript/reference/global_objects/weakset/index.html
@@ -0,0 +1,146 @@
+---
+title: WeakSet
+slug: Web/JavaScript/Reference/Objets_globaux/WeakSet
+tags:
+ - ECMAScript 2015
+ - JavaScript
+ - Reference
+ - WeakSet
+translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet
+---
+<div>{{JSRef}}</div>
+
+<p>L'objet <strong><code>WeakSet</code></strong> permet de créer un ensemble dont les objets sont contenus avec des références <em>faibles</em>.</p>
+
+<h2 id="Syntaxe">Syntaxe</h2>
+
+<pre class="syntaxbox">new WeakSet([<var>itérable</var>]);</pre>
+
+<h3 id="Paramètre">Paramètre</h3>
+
+<dl>
+ <dt><code>itérable</code></dt>
+ <dd>Si un <a href="/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration#Le_protocole_.C2.AB_it.C3.A9rable_.C2.BB">objet itérable</a> est présent comme argument, ses éléments seront ajoutés au nouvel objet <code>WeakSet</code>. {{jsxref("null")}} est traité comme {{jsxref("undefined")}}.</dd>
+</dl>
+
+<h2 id="Exemples">Exemples</h2>
+
+<pre class="brush: js">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é
+</pre>
+
+<p>On notera que <code>toto !== truc</code>. Bien que ce soient des objets similaires, ce ne sont pas les mêmes objets. Aussi, les deux sont ajoutés à l'ensemble.</p>
+
+<h2 id="Description">Description</h2>
+
+<p>Les <code>WeakSet</code> sont des ensembles d'objets. Un objet présent dans un objet <code>WeakSet</code> ne peut apparaître qu'une seule fois, il est unique pour un <code>WeakSet</code> donné.</p>
+
+<p>Les principales différences avec l'objet {{jsxref("Set")}} sont les suivantes :</p>
+
+<ul>
+ <li>Contrairement aux <code>Sets</code>, les <code>WeakSets</code> sont des <strong>ensembles uniquement constitués d'objets </strong>et ne peuvent pas contenir des valeurs de n'importe quel type.</li>
+ <li>L'objet <code>WeakSet</code> est <em>faible :</em> 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 <code>WeakSet</code>, 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 <code>WeakSets</code> ne sont pas énumérables.</li>
+</ul>
+
+<h2 id="Propriétés">Propriétés</h2>
+
+<dl>
+ <dt><code>WeakSet.length</code></dt>
+ <dd>La valeur de la propriété <code>length</code> est 0.</dd>
+ <dt>{{jsxref("WeakSet.prototype")}}</dt>
+ <dd>Cette propriété représente le prototype pour le constructeur <code>WeakSet</code>. Il permet d'ajouter des propriétés pour tous les objets <code>WeakSet</code>.</dd>
+</dl>
+
+<h2 id="Instances_de_WeakSet">Instances de <code>WeakSet</code></h2>
+
+<p>Toutes les instances de <code>WeakSet</code> héritent de {{jsxref("WeakSet.prototype")}}.</p>
+
+<h3 id="Propriétés_2">Propriétés</h3>
+
+<p>{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakSet/prototype','Propri.C3.A9t.C3.A9s')}}</p>
+
+<h3 id="Méthodes">Méthodes</h3>
+
+<p>{{page('fr/docs/Web/JavaScript/Reference/Objets_globaux/WeakSet/prototype','M.C3.A9thodes')}}</p>
+
+<h2 id="Exemples_2">Exemples</h2>
+
+<h3 id="Détecter_les_références_circulaires">Détecter les références circulaires</h3>
+
+<p>Les fonctions récursives doivent faire attention aux structures de données circulaire qu'elles consommeraient. Les objets <code>WeakSets</code> peuvent être utilisé pour ça :</p>
+
+<pre class="brush: js">// Appeler un callback sur ce qui est stocké dans un objet
+function execRecursively(fn, subject, _refs = null){
+ if(!_refs)
+ _refs = new WeakSet();
+
+ // On évite une récursion infinie
+ if(_refs.has(subject))
+ return;
+
+ fn(subject);
+ if("object" === typeof subject){
+ _refs.add(subject);
+ for(let key in subject)
+ execRecursively(fn, subject[key], _refs);
+ }
+}
+
+const toto = {
+ toto: "Toto",
+ truc: {
+ truc: "Truc"
+ }
+};
+
+toto.truc.machin = toto; // Référence circulaire !
+execRecursively(obj =&gt; console.log(obj), toto);
+</pre>
+
+<p>Ici, on a un objet <code>WeakSet</code> qui est créé lors de la première exécution et qui est passé ensuite à chaque appel qui suit (via l'argument interne <code>_refs</code>). Le nombre d'objets ou l'ordre de parcours n'a pas d'importance et un objet <code>WeakSet</code> est donc plus adapté (y compris en termes de performances) qu'un {{jsxref("Set")}}, notamment si un grand nombre d'objets sont concernés.</p>
+
+<h2 id="Spécifications">Spécifications</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spécification</th>
+ <th scope="col">État</th>
+ <th scope="col">Commentaires</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-weakset-objects', 'WeakSet')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Définition initiale.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
+
+<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.WeakSet")}}</p>
+
+<h2 id="Voir_aussi">Voir aussi</h2>
+
+<ul>
+ <li>{{jsxref("Map")}}</li>
+ <li>{{jsxref("Set")}}</li>
+ <li>{{jsxref("WeakMap")}}</li>
+</ul>