Name
Object.propertyIsEnumerable( ) — will property be seen by a for/in loop?
Availability
JavaScript 1.5; JScript 5.5; ECMAScript v3
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 that it only works 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, Fourth 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.