Не выводит свойства объекта в цикле

Есть пустой объект в который я записал два новых свойства firstAdd и secondAdd по идее цикл должен выводить пару ключ:значение через alert, но этого почему-то не происходит. В чем проблема?

let obj = {
}

Object.defineProperties(obj,{
firstAdd: {value: 'Первый', writable: true},
secondAdd: {value:'Второй', writable: true},    
});

for (let values of Object.entries(obj)) {
 alert(values); 
}


Ответы (1 шт):

Автор решения: Grundy

По-умолчанию, значение свойства enumerable установлено как false.

Object.entries возвращает, только перечислимые свойства.

Так как в примере нет перечислимых свойств (таких, у которых enumerable===true) то ничего и не выводится.

Для исправления достаточно явно указать, что свойство является перечислимым.

let obj = {
}

Object.defineProperties(obj,{
  firstAdd: {value: 'Первый', writable: true, enumerable: true},
  secondAdd: {value:'Второй', writable: true, enumerable: true},    
});

for (let values of Object.entries(obj)) {
 console.log(values); 
}

→ Ссылка