Что означают цвета в панели инструментов разработчика Chrome?
Мне любопытно, почему некоторые переменные являются твердыми, а некоторые переменные-полупрозрачными. В чем разница между ними? Оба варианта доступны в глобальном масштабе.

1 ответов
если свойство показано затемненным, это означает, что оно не перечисляется. Поэтому он не будет отображаться, когда вы просматриваете свойства объекта:
возьмите объект location в качестве примера:
при перечислении свойств toString, valueOf и __proto__ не появлюсь:
var keys = []; for (var key in location) { keys.push(key) }; console.log(keys)
-> ["replace", "assign", "hash", "search", "pathname", "port", "hostname", "host",  
"protocol", "origin", "href", "ancestorOrigins", "reload"]
можно использовать propertyIsEnumerable чтобы узнать, будет ли свойство отображаться при цикле над объект:
location.propertyIsEnumerable("search")
// true
location.propertyIsEnumerable("toString")
// false
по умолчанию перечисляются все свойства объекта:
но вы можете изменить это с помощью defineProperty: 
Object.defineProperty(post, "author", {
     value: "John Doe",
     enumerable: false
});
когда вы регистрируете этот объект в консоли, свойство author появляется в несколько более светлом оттенке фиолетового.
(кажется, что сокращенная версия не поддерживает эту функцию форматирования, но мы можем заставить DevTools использовать более длинную версию для небольшого объект, использующий .)
 
            

