Атрибутenumerable
Атрибут enumerable
свойства определяет, просматривается ли свойство в цикле for...in
и методом Object.keys()
или нет.
var o = {};
Object.defineProperty(o, 'a', { value: 1, enumerable: true });
Object.defineProperty(o, 'b', { value: 2, enumerable: false });
// Атрибут enumerable по умолчанию установлен в false
Object.defineProperty(o, 'c', { value: 3 });
o.d = 4; // При создании свойства путём присваивания, атрибут enumerable
// по умолчанию установливается в true
for (var i in o) {
console.log(i);
}
// Выведет 'a' и 'd' (порядок вывода не определён)
Object.keys(o); // ['a', 'd']
o.propertyIsEnumerable('a'); // true
o.propertyIsEnumerable('b'); // false
o.propertyIsEnumerable('c'); // false