JavaScript Enumerability
May 27, 2021
JavaScript object properties have an enumerable
property that controls whether that property shows up in for/in
loops and the Object.keys()
function.
If you create a POJO using {}
, all the POJO's properties will be enumerable by default.
const obj = {
name: 'Jean-Luc Picard',
age: 59
};
Object.keys(obj); // ['name', 'age']
However, you can also define a property on an object using the Object.defineProperty()
function.
Set enumerable
to false
and that property won't show up in Object.keys()
.
Object.defineProperty(obj, 'hidden', {
enumerable: false,
value: 42
});
obj.hidden; // 42
Object.keys(obj); // ['name', 'age'], no 'hidden'!
You can check if a property
if enumerable using the propertyIsEnumerable()
function which returns
a Boolean.
const obj = { name: 'first' };
obj.propertyIsEnumerable('name'); // true
Did you find this tutorial useful? Say thanks by starring our repo on GitHub!