2016-04-10 3 views

risposta

7

Se la proprietà è mostrato in grigio che significa che non è enumerabile. Così non verrà mostrata quando si esegue un ciclo attraverso le proprietà dell'oggetto:

prendere l'oggetto posizione come esempio:

Location logged in console

Quando enumerare le proprietà toString, valueOf e __proto__ non mostrano up:

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"] 

È possibile utilizzare propertyIsEnumerable per trovare ou t se la proprietà verrà visualizzato quando si esegue un ciclo sopra l'oggetto:

location.propertyIsEnumerable("search") 
// true 
location.propertyIsEnumerable("toString") 
// false 

Per impostazione predefinita tutte le proprietà di un oggetto sono enumerabile:

post.title is enumerable

ma si può cambiare che, utilizzando defineProperty:

Object.defineProperty(post, "author", { 
    value: "John Doe", 
    enumerable: false 
}); 

Quando si registra quell'oggetto nella console, la proprietà dell'autore viene visualizzata in una tonalità leggermente più chiara di viola.

(sembra la versione abbreviata non ha il supporto per questa caratteristica la formattazione, ma siamo in grado di costringere DevTools di utilizzare la versione più lunga per un piccolo oggetto utilizzando la funzione dir.)

author property isn't enumerable

+1

Fantastico dettaglio! Grazie –