/* 迭代对象 实现了迭代器的对象 迭代器:方法 [Symbol.iterator] */ var obj = { left: 100, top: 200 }; // 迭代协议 obj[Symbol.iterator] = function() { let keys = Object.keys(obj); //[‘left‘,‘top‘] let len = keys.length; let n = 0; return { next: function() { if (n < len) { return { value: {k: keys[n], v: obj[keys[n++]]}, done: false } } else { return { done: true } } } } } // obj[Symbol.iterator]().next() => {done: true} for (var {k, v} of obj) { //of 是一个可迭代的对象 console.log(k, v); }
原文:https://www.cnblogs.com/tengx/p/12683934.html