В JavaScript свойства могут быть перечисляемыми или нет. Неперечислимые свойства игнорируются циклом for-in или Object.keys()
. Все встроенные методы не перечисляются. (Вот почему for-in не перечисляет все методы в Object.prototype
для каждого объекта.)
Похоже, что Chrome использует темно-фиолетовый для обозначения перечислимого свойства и светло-фиолетовый для обозначения не перечисляемого. Их не нужно наследовать. Демо (скриншот из Chrome 73.0.3683.103):
Object.defineProperties({}, {
foo: {enumerable: true, value: 1},
bar: {enumerable: false, value: 2},
});
![enter image description here](https://i.stack.imgur.com/oLLVX.png)
Если вы хотите получить свойства объекта, включая даже не перечисляемые, вы можете использовать Object.getOwnPropertyNames(o)
. Однако вам нужно будет самостоятельно следовать цепочке прототипов, если вы хотите найти унаследованные свойства.