aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/global_objects/object/propertyisenumerable/index.md
blob: bd52c6c0abc89f081ee4be3bdf517f1d1b339d91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
---
title: Object.prototype.propertyIsEnumerable()
slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
tags:
  - JavaScript
  - Méthode
  - Object
  - Prototype
  - Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
original_slug: Web/JavaScript/Reference/Objets_globaux/Object/propertyIsEnumerable
---
{{JSRef}}

La méthode **`propertyIsEnumerable()`** renvoie un booléen qui indique si la propriété donnée est énumérable.

{{EmbedInteractiveExample("pages/js/object-prototype-propertyisenumerable.html")}}

## Syntaxe

    obj.propertyIsEnumerable(prop)

### Paramètres

- `prop`
  - : Le nom de la propriété dont on souhaite savoir si elle est énumérable ou non.

### Valeur de retour

Un booléen qui indique si la propriété passée en argument est énumérable.

## Description

Chaque objet possède une méthode `propertyIsEnumerable`. Cette méthode est utilisée afin de savoir s'il est possible d'énumérer la propriété donnée au moyen d'une boucle {{jsxref("Instructions/for...in", "for...in")}}. Cela concerne uniquement les propriétés propres à l'objet (celles qui ne sont pas héritées via la chaîne de prototypes). Si un objet ne possède pas la propriété, cette méthode renverra `false`.

## Exemples

### Utiliser `propertyIsEnumerable`

Dans l'exemple qui suit, on illustre comment utiliser `propertyIsEnumerable` sur les objets et tableaux :

```js
var o = {};
var a = [];
o.prop = 'est énumérable';
a[0] = 'est énumérable';

o.propertyIsEnumerable('prop');   // renvoie true
a.propertyIsEnumerable(0);        // renvoie true
```

### Objets natifs et objets définis par l'utilisateur

Dans l'exemple ci-dessous, on illustre l'énumérabilité des propriétés des objets natifs et celle des objets tiers, définis dans les scripts :

```js
var a = ['est énumérable'];

a.propertyIsEnumerable(0);          // renvoie true
a.propertyIsEnumerable('length');   // renvoie false

Math.propertyIsEnumerable('random');   // renvoie false
this.propertyIsEnumerable('Math');     // renvoie false
```

### Propriétés héritées et propriétés propres

```js
var a = [];
a.propertyIsEnumerable('constructor');         // renvoie false

function premierConstructeur() {
  this.propriete = 'non énumérable';
}

premierConstructeur.prototype.premiereMethode = function() {};

function secondConstructeur() {
  this.methode = function methode() { return 'énumérable'; };
}

secondConstructeur.prototype = new premierConstructeur;
secondConstructeur.prototype.constructor = secondConstructeur;

var o = new secondConstructeur();
o.propArbitraire = 'is enumerable';

o.propertyIsEnumerable('propArbitraire');   // renvoie true
o.propertyIsEnumerable('méthode');          // renvoie true
o.propertyIsEnumerable('propriété');        // renvoie false

o.propriete = 'énumérable';

o.propertyIsEnumerable('propriété');        // renvoie true

// Ces instructions renvoient false car propertyIsEnumerable
// ne prend pas en compte la chaîne de prototypes
o.propertyIsEnumerable('prototype');   // renvoie false
o.propertyIsEnumerable('constructor'); // renvoie false
o.propertyIsEnumerable('premièreMéthode'); // renvoie false
```

## Spécifications

| Spécification                                                                                                                                        | État                         | Commentaires         |
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- |
| {{SpecName('ES3')}}                                                                                                                             | {{Spec2('ES3')}}         | Définition initiale. |
| {{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}                                             | {{Spec2('ES5.1')}}     |                      |
| {{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}         | {{Spec2('ES6')}}         |                      |
| {{SpecName('ESDraft', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}} | {{Spec2('ESDraft')}} |                      |

## Compatibilité des navigateurs

{{Compat("javascript.builtins.Object.propertyIsEnumerable")}}

## Voir aussi

- [Caractère énumérable et rattachement des propriétés](/fr/docs/Web/JavaScript/Caractère_énumérable_des_propriétés_et_rattachement)
- {{jsxref("Instructions/for...in", "for...in")}}
- {{jsxref("Object.keys()")}}
- {{jsxref("Object.defineProperty()")}}