Показать сообщение отдельно
  #9 (permalink)  
Старый 06.08.2022, 13:52
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от Aetae Посмотреть сообщение
Andy_kun, нет, for in, если условно, равносильно рекурсивному вызову Object.keys вверх по цепочке наследования (Obect.keys(el) + Object.keys(Object.getProtiotypeOf(el)) + ...). Object.getOwnPropertyNames получает также как и keys только свойства самого объекта, но в отличение от keys он получает все свойства, а не только перечислимые(enumerable).

{
const parent = {
  parentProp: 'bar'
};
const child = Object.create(parent, {
  nonEnumerableChildProp: {
    enumerable: false,
    value: 'buz'
  }
});
child.childProp = 'foo';

function *keys (obj) {
  for (const key in obj)
    yield key;
} 
  
console.log('child.parentProp', child.parentProp);
console.log('child.childProp', child.childProp);
console.log('child.nonEnumerableChildProp', child.nonEnumerableChildProp);

console.log('object.keys', Object.keys(child));
console.log('object.getOwnPropertyNames', Object.getOwnPropertyNames(child));
console.log('for in', [...keys(child)]);
}

Еще раз спасибо! А где можно про этот обход почитать и про "ключевое слово" в данном случае key ?
А что если для этих свойств нужно получить значения ?
Существует аналог слова "key" для values ?

PS:for...in - только для свойств. Тут написано: https://developer.mozilla.org/ru/doc...ments/for...in

Как же тогда сопоставить этим свойствам их значения?

Последний раз редактировалось Andy_kun, 06.08.2022 в 14:10.
Ответить с цитированием