什么是迭代器?
迭代器 (iterator)它就是一个方法 Symbol.iterator 数据调用这个方法 就可以可生成迭代器对象,从而就可以实现 循环效果
然而对象本身没有这个办法,如果想给对象部署迭代器,其实就是给对象添加这个方法
但是为了所有对象都可以用到这个迭代器方法,我们可以将迭代器方法Symbol.iterator添加到原型链的终点Object.prototype
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
Object.prototype[Symbol.iterator] = function(){
let that = this
let valArr = Object.values(this)
let idx = -1
let iterator = {
next(){
idx++
if(idx<valArr.length){
return {
value:valArr[idx],
done:false
}
}else{
return {
value:valArr[idx],
done:true
}
}
}
}
return iterator
}
let obj = {name:"张三",age:18}
let it = obj[Symbol.iterator]()
console.log(it.next())
console.log(it.next())
console.log(it.next())
for(let a of obj){console.log(a)}
console.log(...obj)
</script>
</body>
</html>
将其封装为函数,如果想使用就可以直接引入