// for of 遍历器 (可迭代对象)
let arr = [1,2,3,4,5]
// ①、数组迭代
for (let val of arr) {
console.log(val,'--->数组迭代')
}
// ②、字符串迭代
let str = 'abcde'
for(let val of str) {
console.log(val,'--->字符串迭代')
}
// ③、对象迭代
let obj = {
from:1,
to:5
}
// 对象如果想要迭代的话需要给对象添加一个属性 Symbol.iterator,且需要返回一个迭代器对象(一个含有next方法的对象)
// for of迭代时,会调用这个方法,没有的话会报错
// next方法返回的格式数据必须是 {done:false,value:any},当 done为true时表示迭代结束
obj[Symbol.iterator] = function(){
return {
from:this.from,
to:this.to,
next(){
return this.from<this.to?{done:false,value:this.from++}:{done:true}
}
}
}
// for of 迭代
for(let val of obj){
console.log(val,'--->对象迭代')
}
console