js-迭代器模式

163 阅读1分钟

直接代码

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)
    }
}

//test
let aarr = [1,2,3,4,5,6]
let container = new Container(arr)
let iterator = container.getIterator()
while(iterator.hasNext){
    console.log(iterator.next())
}

jQuery  DEMO

functon each(data){
    var $data= $(data)
    $data.each(function (key,p){
        console.log(key,p)
    })
}
//测试代码
each(arr)
each(nodeList)
each($p)



ES6中的for of用的就是Iterator