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

迭代器

迭代器模式:不暴露对象内部结构的同时,可以顺序的访问聚合对象内部的元素

  • 提供一致的遍历各种数据结构的方式,而不用了解数据的内部结构
  • 提供遍历容器(集合)的能力而无需改变容器的接口

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

  • 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 遍历

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值