Aby dodać użycie ES2015 Reflect.ownKeys(obj)
a także iterację właściwości za pomocą iteratora.
Na przykład:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
można powtórzyć przez
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
Jeśli chcesz iterować bezpośrednio po wartościach kluczy obiektu, możesz zdefiniować iterator
, podobnie jak domyślne iteratory JavaScipts dla łańcuchów, tablic, tablic maszynowych, mapy i zestawu.
JS spróbuje wykonać iterację za pomocą domyślnej właściwości iteratora, którą należy zdefiniować jako Symbol.iterator
.
Jeśli chcesz mieć możliwość iteracji po wszystkich obiektach, możesz dodać go jako prototyp obiektu:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
Umożliwiłoby to iterację wartości obiektu z pętlą for ..., na przykład:
for(val of obj) { console.log('Value is:' + val ) }
Uwaga : w momencie pisania tej odpowiedzi (czerwiec 2018 r.) Wszystkie inne przeglądarki, ale IE, obsługują generatory i for...of
iterację za pośrednictwemSymbol.iterator
if (typeof(obj[propt]) === 'object') {
/ * Zrób to ponownie * /}