提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
内部迭代器
如forEach函数,函数内部定义好迭代规则,完全接手整个迭代过程,只需要一次初始调用。
外部迭代器
必须显式请求下一个迭代元素。外部迭代器可以自定义迭代的顺序。这种迭代器需要具备next方法。
举例
为了应对不同的环境,预先实现了所有可能需要的方法,应用时依次尝试这些方法,需要实现一个迭代器方法。
// 这些可迭代的方法应该遵守一些约定,如可用时返回对象,不可以返回false
var iteratorFunc=function(fnAry){
for(var i=0,curFn;curFn=fnAry[i++];){
var res=curFn()
if(res!==false){
return res
}
}
}
目前大多数语言都内置了迭代器,迭代器模式由于太简单,很多时候不被认为是一种设计模式。