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/enumerability_and_ownership_of_properties | |
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/enumerability_and_ownership_of_properties')
-rw-r--r-- | files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md | 650 |
1 files changed, 410 insertions, 240 deletions
diff --git a/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md b/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md index a2a24711a8..cad3505a3d 100644 --- a/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md +++ b/files/fr/web/javascript/enumerability_and_ownership_of_properties/index.md @@ -8,161 +8,332 @@ tags: translation_of: Web/JavaScript/Enumerability_and_ownership_of_properties original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattachement --- -<div>{{JsSidebar("More")}}</div> +{{JsSidebar("More")}} -<p>Les propriétés dites « énumérables » sont celles pour lesquelles la caractéristique interne <code>[[Enumerable]]</code> vaut <code>true</code>. C'est le cas par défaut pour les propriétés qui sont créées grâce à une affectation simple ou grâce à un initialisateur de propriété. Les propriétés définies avec des méthodes analogues à {{jsxref("Object.defineProperty()")}} auront <code>[[Enumerable]]</code> à <code>false</code>). Les propriétés énumérables sont celles qui seront parcourues dans une boucle {{jsxref("Instructions/for...in","for..in")}} (sauf si le nom de la propriété est un {{jsxref("Symbol")}}).</p> +Les propriétés dites « énumérables » sont celles pour lesquelles la caractéristique interne `[[Enumerable]]` vaut `true`. C'est le cas par défaut pour les propriétés qui sont créées grâce à une affectation simple ou grâce à un initialisateur de propriété. Les propriétés définies avec des méthodes analogues à {{jsxref("Object.defineProperty()")}} auront `[[Enumerable]]` à `false`). Les propriétés énumérables sont celles qui seront parcourues dans une boucle {{jsxref("Instructions/for...in","for..in")}} (sauf si le nom de la propriété est un {{jsxref("Symbol")}}). -<p>Le rattachement des propriétés est détérminé selon que la propriété est directement rattachée à l'objet et non à sa chaîne de prototypes. Il est également possible de récupérer l'ensemble des propriétés d'un objet. Dans le tableau suivant, on détaille les moyens possibles pour détecter, parcourir, énumérer, récupérer les propriétés d'un objet.</p> +Le rattachement des propriétés est détérminé selon que la propriété est directement rattachée à l'objet et non à sa chaîne de prototypes. Il est également possible de récupérer l'ensemble des propriétés d'un objet. Dans le tableau suivant, on détaille les moyens possibles pour détecter, parcourir, énumérer, récupérer les propriétés d'un objet. <table> - <caption>Caractère énumérable et rattachement - méthodes natives pour détecter, récupérer et parcourir les propriétés</caption> - <tbody> - <tr> - <th>Fonctionnalité</th> - <th>Rattachement direct à l'objet</th> - <th>Rattachement direct à l'objet et sur la chaîne de prototypes</th> - <th>Uniquement sur la chaîne de prototypes</th> - </tr> - <tr> - <td>Détection</td> - <td> - <table> - <thead> - <tr> - <th scope="col">Énumérables</th> - <th scope="col">Non-énumérables</th> - <th scope="col">Toutes</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable">propertyIsEnumerable()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty">hasOwnProperty()</a></code></p> - </td> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty">hasOwnProperty()</a> - </code>en utilisant <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable">propertyIsEnumerable()</a></code> afin d'exclure les propriétés énumérables</td> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty">hasOwnProperty()</a></code></td> - </tr> - </tbody> - </table> - </td> - <td> - <table> - <thead> - <tr> - <th scope="col">Énumerables</th> - <th scope="col">Non-énumérables</th> - <th scope="col">Toutes</th> - </tr> - </thead> - <tbody> - <tr> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in">in</a></code></td> - </tr> - </tbody> - </table> - </td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - </tr> - <tr> - <td>Récupération</td> - <td> - <table> - <thead> - <tr> - <th scope="col">Énumérables</th> - <th scope="col">Non-énumérables</th> - <th scope="col">Toutes</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys">Object.keys()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a></code></p> - </td> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a></code> <code>- <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a> </code>en utilisant <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable">propertyIsEnumerable()</a></code> afin d'exclure les propriétés énumérables</td> - <td> - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a></code></p> - </td> - </tr> - </tbody> - </table> - </td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - </tr> - <tr> - <td>Parcours</td> - <td> - <table> - <thead> - <tr> - <th scope="col">Énumérables</th> - <th scope="col">Non-énumérables</th> - <th scope="col">Toutes</th> - </tr> - </thead> - <tbody> - <tr> - <td> - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys">Object.keys()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a></code></p> - </td> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a> - <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a></code>en utilisant <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable">propertyIsEnumerable()</a></code> afin d'exclure les propriétés énumérables</td> - <td> - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames">getOwnPropertyNames()</a></code></p> - - <p><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols">getOwnPropertySymbols()</a></code></p> - </td> - </tr> - </tbody> - </table> - </td> - <td> - <table> - <thead> - <tr> - <th scope="col">Énumerables</th> - <th scope="col">Non-énumérables</th> - <th scope="col">Toutes</th> - </tr> - </thead> - <tbody> - <tr> - <td><code><a href="/fr/docs/Web/JavaScript/Reference/Instructions/for...in">for..in</a></code></td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - </tr> - </tbody> - </table> - </td> - <td>Cette fonctionnalité n'est pas disponible sans code supplémentaire.</td> - </tr> - </tbody> + <caption> + Caractère énumérable et rattachement - méthodes natives pour détecter, + récupérer et parcourir les propriétés + </caption> + <tbody> + <tr> + <th>Fonctionnalité</th> + <th>Rattachement direct à l'objet</th> + <th>Rattachement direct à l'objet et sur la chaîne de prototypes</th> + <th>Uniquement sur la chaîne de prototypes</th> + </tr> + <tr> + <td>Détection</td> + <td> + <table> + <thead> + <tr> + <th scope="col">Énumérables</th> + <th scope="col">Non-énumérables</th> + <th scope="col">Toutes</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable" + >propertyIsEnumerable()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty" + >hasOwnProperty()</a + ></code + > + </p> + </td> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty" + >hasOwnProperty()</a + > + - </code + >en utilisant <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable" + >propertyIsEnumerable()</a + ></code + > + afin d'exclure les propriétés énumérables + </td> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/hasOwnProperty" + >hasOwnProperty()</a + ></code + > + </td> + </tr> + </tbody> + </table> + </td> + <td> + <table> + <thead> + <tr> + <th scope="col">Énumerables</th> + <th scope="col">Non-énumérables</th> + <th scope="col">Toutes</th> + </tr> + </thead> + <tbody> + <tr> + <td> + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + </td> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in" + >in</a + ></code + > + </td> + </tr> + </tbody> + </table> + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code supplémentaire. + </td> + </tr> + <tr> + <td>Récupération</td> + <td> + <table> + <thead> + <tr> + <th scope="col">Énumérables</th> + <th scope="col">Non-énumérables</th> + <th scope="col">Toutes</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys" + >Object.keys()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + ></code + > + </p> + </td> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + ></code + > + <code + >- <a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + > </code + >en utilisant <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable" + >propertyIsEnumerable()</a + ></code + > + afin d'exclure les propriétés énumérables + </td> + <td> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + ></code + > + </p> + </td> + </tr> + </tbody> + </table> + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code supplémentaire. + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code supplémentaire. + </td> + </tr> + <tr> + <td>Parcours</td> + <td> + <table> + <thead> + <tr> + <th scope="col">Énumérables</th> + <th scope="col">Non-énumérables</th> + <th scope="col">Toutes</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/keys" + >Object.keys()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + ></code + > + </p> + </td> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + > + - + <a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + ></code + >en utilisant <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable" + >propertyIsEnumerable()</a + ></code + > + afin d'exclure les propriétés énumérables + </td> + <td> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyNames" + >getOwnPropertyNames()</a + ></code + > + </p> + <p> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertySymbols" + >getOwnPropertySymbols()</a + ></code + > + </p> + </td> + </tr> + </tbody> + </table> + </td> + <td> + <table> + <thead> + <tr> + <th scope="col">Énumerables</th> + <th scope="col">Non-énumérables</th> + <th scope="col">Toutes</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <code + ><a + href="/fr/docs/Web/JavaScript/Reference/Instructions/for...in" + >for..in</a + ></code + > + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code + supplémentaire. + </td> + </tr> + </tbody> + </table> + </td> + <td> + Cette fonctionnalité n'est pas disponible sans code supplémentaire. + </td> + </tr> + </tbody> </table> -<h2 id="Obtenir_les_propriétés_selon_leur_caractère_énumérable_et_selon_leur_rattachement">Obtenir les propriétés selon leur caractère énumérable et selon leur rattachement</h2> +## Obtenir les propriétés selon leur caractère énumérable et selon leur rattachement -<p>Dans la plupart des cas, ce n'est pas l'algorithme le plus efficace mais il est présenté ici à des fins explicatives.</p> +Dans la plupart des cas, ce n'est pas l'algorithme le plus efficace mais il est présenté ici à des fins explicatives. -<ul> - <li>On peut détecter la présence d'une propriété grâce à <code>RecuperateurDePropriete.laMethodeSouhaitee(obj).indexOf(prop) > -1</code></li> - <li>On peut parcourir les propriétés souhaitées avec <code>RecuperateurDePropriete.laMethodeSouhaitee(obj).forEach(function (value, prop) {});</code> (on peut aussi utiliser <code>filter()</code>, <code>map()</code>, etc.)</li> -</ul> +- On peut détecter la présence d'une propriété grâce à `RecuperateurDePropriete.laMethodeSouhaitee(obj).indexOf(prop) > -1` +- On peut parcourir les propriétés souhaitées avec `RecuperateurDePropriete.laMethodeSouhaitee(obj).forEach(function (value, prop) {});` (on peut aussi utiliser `filter()`, `map()`, etc.) -<pre class="brush: js">var RecuperateurDePropriete = { +```js +var RecuperateurDePropriete = { getOwnEnumerables: function (obj) { return this._getPropertyNames(obj, true, false, this._enumerable); // On pourrait également utiliser for..in qu'on filtre avec hasOwnProperty @@ -211,7 +382,7 @@ original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattac do { if (iterateSelfBool) { Object.getOwnPropertyNames(obj).forEach(function (prop) { - if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) { + if (props.indexOf(prop) === -1 && includePropCb(obj, prop)) { props.push(prop); } }); @@ -224,102 +395,101 @@ original_slug: Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattac return props; } -};</pre> +}; +``` -<h2 id="Tableau_de_détection">Tableau de détection</h2> +## Tableau de détection <table> - <thead> - <tr> - <th scope="row"></th> - <th scope="col"><code>in</code></th> - <th scope="col"><code>for..in</code></th> - <th scope="col"><code>obj.hasOwnProperty()</code></th> - <th scope="col"><code>obj.propertyIsEnumerable()</code></th> - <th scope="col"><code>Object.keys()</code></th> - <th scope="col"><code>Object.getOwnPropertyNames()</code></th> - <th scope="col"><code>Object.getOwnPropertyDescriptors()</code></th> - <th scope="col"><code>Reflect.ownKeys()</code></th> - </tr> - </thead> - <tbody> - <tr> - <th scope="row">Propriétés énumérables</th> - <td>true</td> - <td>true</td> - <td>true</td> - <td>true</td> - <td>true</td> - <td>true</td> - <td>true</td> - <td>true</td> - </tr> - <tr> - <th scope="row">Propriétés non-énumérables</th> - <td>true</td> - <td>false</td> - <td>true</td> - <td>false</td> - <td>false</td> - <td>true</td> - <td>true</td> - <td>true</td> - </tr> - <tr> - <th scope="row">Propriétés dont les clés sont des symboles</th> - <td>true</td> - <td>false</td> - <td>true</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>true</td> - <td>true</td> - </tr> - <tr> - <th scope="row">Propriétés héritées et énumérables</th> - <td>true</td> - <td>true</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - </tr> - <tr> - <th scope="row">Propriétés héritées et non-énumérables</th> - <td>true</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - </tr> - <tr> - <th scope="row">Propriétés héritées dont les clés sont des symboles</th> - <td>true</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - <td>false</td> - </tr> - </tbody> + <thead> + <tr> + <th scope="row"></th> + <th scope="col"><code>in</code></th> + <th scope="col"><code>for..in</code></th> + <th scope="col"><code>obj.hasOwnProperty()</code></th> + <th scope="col"><code>obj.propertyIsEnumerable()</code></th> + <th scope="col"><code>Object.keys()</code></th> + <th scope="col"><code>Object.getOwnPropertyNames()</code></th> + <th scope="col"><code>Object.getOwnPropertyDescriptors()</code></th> + <th scope="col"><code>Reflect.ownKeys()</code></th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">Propriétés énumérables</th> + <td>true</td> + <td>true</td> + <td>true</td> + <td>true</td> + <td>true</td> + <td>true</td> + <td>true</td> + <td>true</td> + </tr> + <tr> + <th scope="row">Propriétés non-énumérables</th> + <td>true</td> + <td>false</td> + <td>true</td> + <td>false</td> + <td>false</td> + <td>true</td> + <td>true</td> + <td>true</td> + </tr> + <tr> + <th scope="row">Propriétés dont les clés sont des symboles</th> + <td>true</td> + <td>false</td> + <td>true</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>true</td> + <td>true</td> + </tr> + <tr> + <th scope="row">Propriétés héritées et énumérables</th> + <td>true</td> + <td>true</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + </tr> + <tr> + <th scope="row">Propriétés héritées et non-énumérables</th> + <td>true</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + </tr> + <tr> + <th scope="row">Propriétés héritées dont les clés sont des symboles</th> + <td>true</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + <td>false</td> + </tr> + </tbody> </table> -<h2 id="Voir_aussi">Voir aussi</h2> +## Voir aussi -<ul> - <li><code><a href="/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in">in</a></code></li> - <li><code><a href="/fr/docs/Web/JavaScript/Reference/Instructions/for...in">for..in</a></code></li> - <li>{{jsxref("Object.hasOwnProperty()")}}</li> - <li>{{jsxref("Object.propertyIsEnumerable()")}}</li> - <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> - <li>{{jsxref("Object.keys()")}}</li> - <li>{{jsxref("Object.getOwnPropertyDescriptors()")}}</li> -</ul> +- [`in`](/fr/docs/Web/JavaScript/Reference/Opérateurs/L_opérateur_in) +- [`for..in`](/fr/docs/Web/JavaScript/Reference/Instructions/for...in) +- {{jsxref("Object.hasOwnProperty()")}} +- {{jsxref("Object.propertyIsEnumerable()")}} +- {{jsxref("Object.getOwnPropertyNames()")}} +- {{jsxref("Object.keys()")}} +- {{jsxref("Object.getOwnPropertyDescriptors()")}} |