- 顺序访问一个集合
-
使用者无需知道集合的内部结构(封装)
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)