例如:把woman对象(Object)给写成可迭代对象:
Object.prototype[Symbol.iterator] = function () {
let _this = this, count = 0;
return {
next() {
if (count < Object.keys(_this).length) {
return { value: Object.values(_this)[count++], done: false }
} else {
return { value: undefined, done: true }
}
}
}
}
let WomanIterator = woman[Symbol.iterator]();
//用生成器中的yield* 把Object改写成可迭代对象
Object.prototype[Symbol.iterator]=function*(){
yield * Object.values(this)
}
let WomanIterator=woman[Symbol.iterator]();
console.log(WomanIterator.next());
console.log(WomanIterator.next());
console.log(WomanIterator.next());
其中代码中的woman是一个对象,里面包含name、year、hobby等基础属性,通过上面把object改成可迭代对象后,就可以直接遍历woman对象了。