1、迭代器用于统一机制,这种机制允许我们调用next()方法,每次调用都会返回一个对象{value,done},当完成迭代后done值为true,value每次获取的元素
(1)手动使用
let iterator = array.values();
let item ;
while(!(item = iterator.next()).done){
console.log(item.value);
}
(2)使用for-of协助
let iterator = array.values();
for(let v of iterator){
console.log(v);
}
(3)使用for-of直接遍历可以迭代的对象
for(let v of array){
console.log(v);
}
(4)如何将一个普通对象变成一个可以迭代的对象
let obj = {name:"terry",age:12}
// 如何获取一个迭代器
obj[Symbol.iterator] = [][Symbol.iterator]
// 将对象转换为set
new Set(obj)
2、具有迭代器
Array Set Map String 类数组对象 Arguments NodeList
3、迭代器是如何添加到Set,Map,Array…这些数据结构上的?
var o = {
name:"terry",
}
o.iterator = iterator;
o.iterator = "hello"
Symbol()
这个函数可以产生一个特殊符号,这个符号可以用于key,通过这个key找见对应的函数。这个key好处在于它是隐式的。
来源:https://blog.csdn.net/jdrunk/article/details/102554527