Hinzufügen der Verwendung Reflect.ownKeys(obj)und Iteration von ES2015 über die Eigenschaften über einen Iterator.
Zum Beispiel:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
kann durch iteriert werden
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
Wenn Sie direkt über die Werte der Schlüssel eines Objekts iterieren möchten, können Sie einen definieren iterator, genau wie die Standarditeratoren von JavaScipts für Zeichenfolgen, Arrays, typisierte Arrays, Map und Set.
JS versucht, über die Standard-Iterator-Eigenschaft zu iterieren, die als definiert werden muss Symbol.iterator.
Wenn Sie in der Lage sein möchten, alle Objekte zu durchlaufen, können Sie es als Prototyp von Object hinzufügen:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
Auf diese Weise können Sie die Werte eines Objekts mit einer for ... of-Schleife durchlaufen, z. B.:
for(val of obj) { console.log('Value is:' + val ) }
Achtung : Zum Zeitpunkt des Schreibens dieser Antwort (Juni 2018) unterstützen alle anderen Browser außer IE Generatoren und for...ofIterationen überSymbol.iterator
if (typeof(obj[propt]) === 'object') {/ * Mach es noch einmal * /}