Перебор свойств объекта

Получить названия всех перечислимых свойств объекта позволяет цикл for...in:

let objA = Object.create(Object.prototype, {
   'a': { value: 10, enumerable: true },
   'c': { value: 22, enumerable: false }
});
let objB = Object.create(objA, {
   'b': { value: 55, enumerable: true }
});
for (let prop in objB) {
   // Переменной prop на каждой итерации присваивается
   // название перечислимого свойства объекта
   console.log(`${prop} = ${objB[prop]}`);
}
// b = 55
// a = 10

Перебрать можно только перечислимые свойства, т. е. свойства для которых метод propertyIsEnumerable() из класса Object вернул значение true. Для свойств встроенных объектов метод возвращает false, поэтому перебрать свойства этих объектов с помощью цикла for...in нельзя. Пример:

console.log( objB.propertyIsEnumerable('b') );        // true
console.log( objA.propertyIsEnumerable('a') );        // true
console.log( objA.propertyIsEnumerable('c') );        // false
console.log( objB.toString() );                       // [object Object]
console.log( objB.propertyIsEnumerable('toString') ); // false
let x = new Number(10);
console.log( x.propertyIsEnumerable('toFixed') );     // false

Цикл for...in имеет доступ не только к свойствам текущего объекта, но и к унаследованным свойствам в цепочке прототипов. Если эти унаследованные свойства не нужны, то следует отфильтровать их с помощью метода hasOwnProperty():

for (let prop in objB) {
   if ( objB.hasOwnProperty(prop) ) {
      console.log(`YES: ${prop}`);
   }
   else {
      console.log(`NO: ${prop}`);
   }
}
// YES: b
// NO: a

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов