@1 迭代器:是一种机制,可以为各种不同的数据结构提供统一的循环和迭代规范;for of循环就
是基于迭代器规范。
class Iterator {
constructor(assemble){
self = this
self.assemble = assemble
self.index= 0
}
next() {
if(seif.index>assemble.length-1){
return {
value:undefiend,
done:true
}
}
return {
value: self.assemble[index++],
done:false
}
}
}
let itor = new Iterator(10,20,30,40)
console.log(itor.next()) // {value:10,done:false}
console.log(itor.next()) // {value:20,done:false}
........
@2 具有迭代器规范类型的数据
Array.prototype[symbol.Iterator];
String.prototype
arguments[symbol.iterator]
@3 对象不具有迭代器规范
给对象原型上面添加迭代器规范
Object.prototype.[symbol.iterator] = function () {
self = this
keys = Reflect.ownKeys(self)
index = 0
return {
next( ) {
if( index > keys.length-1) {
return {
value:undefiend,
done:true
}
}
return {
value: self.keys[index],
done:false
}
}
}
}
let obj = { name:'zs', age:12,sex:'男'}