迭代器模式是指提供一种方法顺序访问一个聚合对象的各个对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑分离出来,在使用迭代器模式模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的每一个元素。
jQuery中的迭代器
$.each([1,2,3],function(i, n) {
console.log('当前下标为:' + i);
console.log('当前值为:' + n);
});-
手动实现一个迭代器----each函数
var each = function(ary, callback) {
for(var i= 0, l= ary.length; i< l; i++) {
callback.call(ary[i], i, ary[i]);
}
};each([1,2,3], function(i, n) { alert([i,n]); })
-
外部迭代器
var Iterator = function(obj) {
var current = 0;var next = function() { current +=1; }; var isDone = function() { return current >= obj.length; }; var getCurrItem = function() { return obj[current]; }; return { next: next, isDone: isDone, getCurrItem: getCurrItem } }; var compare = function(iterator1, iterator2) { while(!iterator1.isDone() && !iterator2.isDone()) { if(iterator1.getCurrItem() !== iterator2.getCurrItem()) { throw new Error('iterator1 和 iterator2 不相等'); } iterator1.next(); iterator2.next(); } alert('iterator1 和 iterator2相等') } var iterator1 = Iterator([1,2,3]); var iterator2 = Iterator([1,2,3]); compare(iterator1,iterator2); //terator1 和 iterator2相等