เพื่อเพิ่มการใช้งานของ ES2015 Reflect.ownKeys(obj)
และยังวนซ้ำคุณสมบัติผ่านตัววนซ้ำ
ตัวอย่างเช่น:
let obj = { a: 'Carrot', b: 'Potato', Car: { doors: 4 } };
สามารถทำซ้ำได้โดย
// logs each key
Reflect.ownKeys(obj).forEach(key => console.log(key));
หากคุณต้องการวนซ้ำโดยตรงกับค่าของคีย์ของวัตถุคุณสามารถกำหนดiterator
เช่นเดียวกับตัววนซ้ำเริ่มต้นของ JavaScipts สำหรับสตริง, อาร์เรย์, อาร์เรย์ที่พิมพ์, แผนที่และชุด
JS จะพยายามย้ำผ่านคุณสมบัติ iterator Symbol.iterator
เริ่มต้นซึ่งจะต้องกำหนดให้เป็น
หากคุณต้องการที่จะย้ำเหนือวัตถุทั้งหมดคุณสามารถเพิ่มมันเป็นต้นแบบของวัตถุ:
Object.prototype[Symbol.iterator] = function*() {
for(p of Reflect.ownKeys(this)){ yield this[p]; }
}
สิ่งนี้จะช่วยให้คุณสามารถวนซ้ำค่าของวัตถุที่มีห่วง ...
for(val of obj) { console.log('Value is:' + val ) }
ข้อควรระวัง : ตั้งแต่วันที่เขียนคำตอบนี้ (มิถุนายน 2018) เบราว์เซอร์อื่น ๆ ทั้งหมด แต่ IE สนับสนุนเครื่องกำเนิดและfor...of
การทำซ้ำผ่านSymbol.iterator
if (typeof(obj[propt]) === 'object') {
/ * ทำอีกครั้ง * /}