对Javascript系列的深入理解(35):设计模式的迭代器模式详细解决方案

介绍

迭代器模式(迭代器):提供一种方法,在不显示对象的内部表示的情况下,按顺序排列聚合对象中的元素。

迭代器的几个特征是:

1。访问聚合对象的内容而不公开其内部表示。

2。为遍历不同的集合结构提供统一的接口,使同一算法能够在不同的集合结构上运行。

三.穿越和改变迭代器集合结构可能造成的问题(例如,C # foreach是不允许修改的项目)。

文本

在一般的迭代,我们至少有2个方法,hasNext()和下(),这样我们可以做的所有对象的遍历,我们先举个例子:

复制代码代码如下所示:

VaR的=((){()函数

var指数= 0,

数据= { 1, 2, 3,4, 5 },

长度= data.length;

返回{

下一步:函数(){

无功元件;

如果(!This.hasNext()){

返回null;

}

元素=数据{索引};

索引= 2;

返回的元素;

},

HasNext:函数(){

返回索引<长度;

},

函数(){

索引= 0;

},

电流:函数(){

返回数据{索引};

}

};

}();



使用的方法是以通常的方式在C #相同:

复制代码代码如下所示:

结果:1、3、5 /迭代

而(agg.hasnext()){

console.log(agg.next());

}



当然,还可以通过添加其他方法重置数据,然后继续其他操作。

复制代码代码如下所示:

重置

Agg.rewind();

Console.log((AGG。电流)); / / 1



jQuery的应用实例

jQuery中一个非常有名的迭代器是每个方法。通过每个函数,我们可以导入附加函数,然后迭代所有项项,例如:

复制代码代码如下所示:

美元。每个({ 'dudu ','dudu ','酸奶的小妹妹,毫米},函数(指数值){

console.log(指数+ ':' +价值);

});



$(李的)。每个(函数(指数){

console.log(指数+:+ $(this)。文本()));

});



总结

迭代器的使用场景是集合内的结果常常是不同的。我们不想公开它的内部结构,但是让客户机代码透明地访问底部的元素。在这种情况下,我们可以使用迭代器模式。