迭代
循环是迭代的基础,迭代是在一个有序集合上进行。
js中凡是实现了迭代器接口的结构称为迭代对象,即实现symbol.iterator方法
简单实现一个迭代器,让我们定义的obj对象变成可迭代对象
const obj = { name: 'ceshi', age: 26 }
obj[Symbol.iterator] = function () {
const returnObj = {}
const _this = this
let index = 0
return {//该方法可选
next() {
const keys = Object.keys(_this)
const done = !(index < keys.length)
const returnObj = {
done,
value: _this[keys[index]]
}
index++
return returnObj
},
return() {//return方法标识该迭代器可关闭,return是可选的,
console.log('如果迭代期间使用break continue return thorw则会触发该函数')
return {
done: true
}
}
}
}
const iterators = obj[Symbol.iterator]()
for (const i of obj) {
console.log(i, 'obj')
break
}
for (const i of obj) {
console.log(i, 'obj')
}