为不同的数据结构提供统一的接口,1)任何数据接口只要部署了Iterator就能遍历,2)而且数据结构能按照某种遍历,3)并且es6有个新的遍历for...of循环
1)为对象添加iterator接口
{ let obj = { data: ['js', 'html', 'css', 'vue'], [Symbol.iterator] () { let self = this let data = self.data let index = 0 let len = data.length return { next () { if (index < len) { return { value: data[index++], done: false } } else { return { value: undefined, done: true } } } } } } for (let k of obj) { console.log(k) } }
自定义数据结构遍历 2个关键点[Symbol.iterator] (){}还有一点是return值next()必须是value和done
2)原生具有的iterator接口的数据接口
Array Map Set String TypedArray 函数的argument的对象
浙公网安备 33010602011771号