Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Получение списка названий свойств
Статический метод keys(<Объект>)
из класса Object
возвращает массив с названиями собственных перечислимых свойств объекта. Цепочка прототипов не просматривается:
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 }
});
console.log( Object.keys(objA) ); // [ 'a' ]
console.log( Object.keys(objB) ); // [ 'b' ]
В этом примере мы не получили свойство c
, т. к. оно не является перечислимым. Если нужно дополнительно получить все собственные свойства, то следует воспользоваться статическим методом getOwnPropertyNames(<Объект>)
из класса Object
:
console.log( Object.getOwnPropertyNames(objA) ); // [ 'a', 'c' ]
console.log( Object.getOwnPropertyNames(objB) ); // [ 'b' ]
Статический метод values(<Объект>)
из класса Object
возвращает массив со значениями собственных перечислимых свойств объекта. Цепочка прототипов не просматривается:
console.log( Object.values(objA) ); // [ 10 ]
console.log( Object.values(objB) ); // [ 55 ]
С помощью статического метода entries(<Объект>)
из класса Object
можно получить массив, каждый элемент которого содержит массив, состоящий из названия и значения собственного перечислимого свойства:
console.log( Object.entries(objA) ); // [ [ 'a', 10 ] ]
console.log( Object.entries(objB) ); // [ [ 'b', 55 ] ]
Давайте напишем функцию, которая будет возвращать массив, состоящий из двух массивов. В первом массиве будут названия всех собственных свойств объекта, а во втором — названия всех свойств в его прототипе (без просмотра всей цепочки):
function getProps(obj) {
if (typeof obj !== 'object' || obj === null)
return [ [], [] ];
let arrOwnProps = Object.getOwnPropertyNames(obj);
arrOwnProps.sort();
if (obj.__proto__ === null)
return [ arrOwnProps, [] ]
let arrProtoProps = Object.getOwnPropertyNames(obj.__proto__);
arrProtoProps.sort();
return [ arrOwnProps, arrProtoProps ]
}
let obj = { a: 0 };
console.log( getProps(obj) );
Результат:
[
[ 'a' ],
[
'__defineGetter__',
'__defineSetter__',
'__lookupGetter__',
'__lookupSetter__',
'__proto__',
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
]
]
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов