迭代器模式-前端设计模式

迭代器

迭代器模式:不暴露对象内部结构的同时,可以顺序的访问聚合对象内部的元素
    提供一致的遍历各种数据结构的方式,而不用了解数据的内部结构 提供遍历容器(集合)的能力而无需改变容器的接口

一个迭代器的实现,通常需要实现以下接口

    next() 查找并返回下一个元素 hasNext() 判断迭代是否结束, 返回布尔值
class Iterator {
          
   
            constructor(container) {
          
   
                this.list = container.list
                this.index = 0

            }
            next() {
          
   
                if(this.hasNext()) {
          
   
                    return this.list[this.index++]
                }
            }
            hasNext() {
          
   
                if(this.index >= this.list.length) {
          
   
                    return false
                }
                return true
            }

        }
        class Container {
          
   
            constructor(list) {
          
   
                this.list = list
            }
            // 生成遍历器
            getIterator() {
          
   
                return new Iterator(this)
            }
        }

        let container = new Container([1,2,3,4,5,6])
        let iterator = container.getIterator()

        while(iterator.hasNext()) {
          
   
            console.log(iterator.next());
        }

ES6提供了更加简单的迭代器语法糖 for…of 能使用 迭代器的条件是:该对象具有 Symbol.iterator属性 数组之所以可以使用 for of 遍历 是因为数组有 Symbol.iterator属性。 对象不具有这个属性, 所有对象不能使用 for of 遍历

经验分享 程序员 微信小程序 职场和发展