1、特點
迭代器模式是指提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內部表示。迭代器模式可以把迭代的過程從業務邏輯中分離出來,在使用迭代器模式之後,即使不關心對象的內部構造,也可以按順序訪問其中的每個元素。
2、demo
實現自己的迭代器
var each = function(ary, callback) {
for (var i = 0; i < ary.length; i++) {
callback.call(ary[i], i, ary[i]);
}
};
each([1, 2, 3, 4], function(i, n) {
console.log(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();
}
console.log('iterator1 和iterator2 相等')
};
var iterator1 = Iterator([1, 2, 3]);
var iterator2 = Iterator([1, 2, 3]);
compare(iterator1, iterator2);
參考文獻:參考文獻:《JavaScript設計模式與開發實踐》