迭代器模式 - 演示与场景

  • 顺序访问一个集合
  • 使用者无需知道集合的内部结构(封装)
    UML类图:


    image.png

    代码演示:

class Iterator{
    constructor(container){
        this.list = container.list
        this.index = 0
    }
    next(){
        if(this.hasNext()) {
            return this.list[this.index++]
        }
        return null
    }
    hasNext(){
        if(this.index >= this.list.length){
            return false
        }
        return true
    }
}
class Container{
    constructor(list){
        this.list = list
    }
    // 生成遍历器
    getIterator(){
       return new Iterator(this) 
    }
}

// 测试代码
var arr = [1, 2, 3, 4, 5, 6]
let container = new Container(arr)
let iterator = container.getIterator()

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

使用场景:
jQuery使用

var arr = [1, 2, 3]
var nodeList = document.getElementsByTagName('a')
var $a = $('a')

function each(data){
    var $data = $(data)
    $data.each(function (key, value){
        console.log(key, value)
    })
}
each(arr)
each(nodeList)
each($a)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 设计模式概述 简介在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。即设计模式是在某种场合下对某个...
    nimw阅读 602评论 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,546评论 1 45
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,354评论 2 54
  • 那年,我背上行囊求学 窄窄的背影印在父亲的双眸 前进的路多远也不怕 汽笛声声入耳,带走了青春 父亲也生出了白发 如...
    奋斗的犇犇阅读 239评论 0 2
  • [一] 深夜。 安莉静静地侧躺在床上,身体微微弯曲,双臂环胸,目光无神的望着床头柜上被窗外的微风不断地吹拂着,摇曳...
    贪看年少阅读 735评论 0 12

友情链接更多精彩内容