diff options
author | julieng <julien.gattelier@gmail.com> | 2021-08-03 08:03:23 +0200 |
---|---|---|
committer | SphinxKnight <SphinxKnight@users.noreply.github.com> | 2021-09-03 08:08:25 +0200 |
commit | bf8e099b9c8b3c60d60b3712b4fc97b052c39887 (patch) | |
tree | c101746d082c9581c94f5937519c7d0e2f4af8cb /files/fr/web/javascript/reference/global_objects/symbol/iterator | |
parent | 844f5103992238c0c23203286dad16a466e89c97 (diff) | |
download | translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.gz translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.tar.bz2 translated-content-bf8e099b9c8b3c60d60b3712b4fc97b052c39887.zip |
convert content to md
Diffstat (limited to 'files/fr/web/javascript/reference/global_objects/symbol/iterator')
-rw-r--r-- | files/fr/web/javascript/reference/global_objects/symbol/iterator/index.md | 118 |
1 files changed, 49 insertions, 69 deletions
diff --git a/files/fr/web/javascript/reference/global_objects/symbol/iterator/index.md b/files/fr/web/javascript/reference/global_objects/symbol/iterator/index.md index 2b3d9bf367..7b3abbbe88 100644 --- a/files/fr/web/javascript/reference/global_objects/symbol/iterator/index.md +++ b/files/fr/web/javascript/reference/global_objects/symbol/iterator/index.md @@ -10,50 +10,48 @@ tags: translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator original_slug: Web/JavaScript/Reference/Objets_globaux/Symbol/iterator --- -<div>{{JSRef}}</div> +{{JSRef}} -<p>Le symbole <code><strong>Symbol.iterator</strong></code> définit l'itérateur par défaut d'un objet. C'est l'itérateur qui sera utilisé par <a href="/fr/docs/Web/JavaScript/Reference/Instructions/for...of"><code>for...of</code></a>.</p> +Le symbole **`Symbol.iterator`** définit l'itérateur par défaut d'un objet. C'est l'itérateur qui sera utilisé par [`for...of`](/fr/docs/Web/JavaScript/Reference/Instructions/for...of). -<div>{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}}</div> +{{EmbedInteractiveExample("pages/js/symbol-iterator.html")}} +## Description +Lorsqu'on doit itérer sur un objet (par exemple avec une boucle `for..of`), sa méthode `@@iterator` est appelée sans argument et l'itérateur renvoyé par la méthode est utilisé pour récupérer les valeurs sur lesquelles itérer. -<h2 id="Description">Description</h2> +Certains types natifs possèdent un comportement par défaut pour l'itération, d'autres types (tels qu'{{jsxref("Object")}}) n'ont pas de tel comportement. Les types natifs qui disposent d'une méthode `@@iterator` sont : -<p>Lorsqu'on doit itérer sur un objet (par exemple avec une boucle <code>for..of</code>), sa méthode <code>@@iterator</code> est appelée sans argument et l'itérateur renvoyé par la méthode est utilisé pour récupérer les valeurs sur lesquelles itérer.</p> +- {{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}} +- {{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}} +- {{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}} +- {{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}} +- {{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}} -<p>Certains types natifs possèdent un comportement par défaut pour l'itération, d'autres types (tels qu'{{jsxref("Object")}}) n'ont pas de tel comportement. Les types natifs qui disposent d'une méthode <code>@@iterator</code> sont :</p> +Pour plus d'informations, voir aussi [la page sur les protocoles d'itération](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration). -<ul> - <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> - <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> - <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> -</ul> +{{js_property_attributes(0,0,0)}} -<p>Pour plus d'informations, voir aussi <a href="/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration">la page sur les protocoles d'itération</a>.</p> +## Exemples -<p>{{js_property_attributes(0,0,0)}}</p> +### Itérables définis par l'utilisateur -<h2 id="Exemples">Exemples</h2> +Il est possible de construire un itérable de la façon suivante : -<h3 id="Itérables_définis_par_l'utilisateur">Itérables définis par l'utilisateur</h3> - -<p>Il est possible de construire un itérable de la façon suivante :</p> - -<pre class="brush: js">var monItérable = {} +```js +var monItérable = {} monItérable[Symbol.iterator] = function* () { yield 1; yield 2; yield 3; }; [...monItérable] // [1, 2, 3] -</pre> +``` -<p>On peut également définir ces itérables via des propriétés calculées dans des déclarations de classe ou dans des littéraux objets :</p> +On peut également définir ces itérables via des propriétés calculées dans des déclarations de classe ou dans des littéraux objets : -<pre class="brush: js">class Toto { +```js +class Toto { *[Symbol.iterator] () { yield 1; yield 2; @@ -70,52 +68,34 @@ const monObj = { [... new Toto] // [1, 2, 3] [... monObj] // ["a", "b"] -</pre> +``` -<h3 id="Itérables_mal-formés">Itérables mal-formés</h3> +### Itérables mal-formés -<p>Si la méthode <code>@@iterator</code> d'un itérable ne renvoie pas un itérateur, on dira que c'est un itérable mal-formé. Utiliser un tel itérable peut provoquer des erreurs lors de l'exécution :</p> +Si la méthode `@@iterator` d'un itérable ne renvoie pas un itérateur, on dira que c'est un itérable mal-formé. Utiliser un tel itérable peut provoquer des erreurs lors de l'exécution : -<pre class="brush: js">var itérableMalFormé = {} -itérableMalFormé[Symbol.iterator] = () => 1 +```js +var itérableMalFormé = {} +itérableMalFormé[Symbol.iterator] = () => 1 [...itérableMalFormé] // TypeError: [] is not a function -</pre> - -<h2 id="Spécifications">Spécifications</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Spécification</th> - <th scope="col">État</th> - <th scope="col">Commentaires</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ES2015', '#sec-symbol.iterator', 'Symbol.iterator')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Définition initiale.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> - -<p>{{Compat("javascript.builtins.Symbol.iterator")}}</p> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li><a href="/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration">Les protocoles d'itération</a></li> - <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> - <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> - <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> - <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> -</ul> +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-symbol.iterator', 'Symbol.iterator')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-symbol.iterator', 'Symbol.iterator')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.builtins.Symbol.iterator")}} + +## Voir aussi + +- [Les protocoles d'itération](/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration) +- {{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}} +- {{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}} +- {{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}} +- {{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}} +- {{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}} |