Сообщение от 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
Как же тогда сопоставить этим свойствам их значения?