Name
Object.propertyIsEnumerable() — will property be seen by a for/in loop?
Synopsis
object
.
propertyIsEnumerable
(
propname
)
Arguments
propname
A string that contains the name of a property of
object
.
Returns
true
if
object
has a noninherited property with
the name specified by propname
and if
that property is enumerable, which means
that it would be enumerated by a for/in
loop on
object
.
Description
The for/in
statement loops
through the enumerable properties of an object. Not all properties
of an object are enumerable, however: properties added to an object
by JavaScript code are enumerable, but the predefined properties
(such as methods) of built-in objects are not usually enumerable.
The propertyIsEnumerable()
method
provides a way to distinguish between enumerable and nonenumerable
properties. Note, however, that the ECMAScript specification states
that propertyIsEnumerable()
does
not examine the prototype chain, which means it works only for local
properties of an object and does not provide any way to test the
enumerability of inherited properties.
Example
var
o
=
new
Object
();
// Create an object
o
.
x
=
3.14
;
// Define a property
o
.
propertyIsEnumerable
(
"x"
);
// true: property x is local and enumerable
o
.
propertyIsEnumerable
(
"y"
);
// false: o doesn't have a property y
o
.
propertyIsEnumerable
(
"toString"
);
// false: toString property is inherited
Object
.
prototype
.
propertyIsEnumerable
(
"toString"
);
// false: nonenumerable
Get JavaScript: The Definitive Guide, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.