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