Свойство объекта должно быть перечисляемым, если вы хотите иметь доступ к нему при выполнении итерации по всем свойствам объекта.Пример:
var obj = {prop1: 'val1', prop2:'val2'};
for (var prop in obj){
console.log(prop, obj[prop]);
}
В этом типе реализации enumerable всегда имеет значение true, это даст вам вывод:
prop1 val1
prop2 val2
Если бы вы использовали Object.create () какИтак:
obj = Object.create({}, { prop1: { value: 'val1', enumerable: true}, prop2: { value: 'val2', enumerable: false} });
Ваш цикл for будет обращаться только к prop1, но не к prop2.Используя Object.create (), свойства устанавливаются с enumerable = false по умолчанию.