представлять
Режим итератора: предоставляет метод для упорядочения отдельных элементов в совокупном объекте без воздействия внутреннего представления объекта.
Несколько характеристик итераторов:
1. Доступ к содержимому совокупного объекта, не обнажая его внутреннего представления.
2. Предоставьте унифицированный интерфейс для прохождения различных структур сбора, тем самым поддерживая один и тот же алгоритм для работы на различных структурах сбора.
3. Изменение структуры сбора, где итератор находится во время прохождения, может вызвать проблемы (например, элемент не разрешается изменять в Foreach в C#).
текст
В общей итерации нам нужно иметь как минимум 2 метода, hasnext () и Next (), чтобы мы могли пересекать все объекты. Давайте сначала приведем пример:
Кода -копия выглядит следующим образом:
var agg = (function () {
var index = 0,
данные = [1, 2, 3, 4, 5],
длина = data.length;
возвращаться {
Далее: function () {
var -элемент;
if (! this.hasnext ()) {
вернуть ноль;
}
element = data [index];
index = index + 2;
возвратный элемент;
},
hasnext: function () {
Индекс возврата <длины;
},
Rewind: function () {
index = 0;
},
current: function () {
вернуть данные [index];
}
};
} ());
Метод использования такой же, как в C#:
Кода -копия выглядит следующим образом:
// Результат итерации: 1, 3, 5
while (agg.hasnext ()) {
console.log (agg.next ());
}
Конечно, вы также можете сбросить данные с помощью дополнительных методов, а затем продолжить другие операции:
Кода -копия выглядит следующим образом:
// Перезагрузить
agg.rewind ();
console.log (agg.current ()); // 1
Пример приложения jQuery
Очень известный итератор в jQuery - это метод. Через каждое из них мы можем передать дополнительную функцию, а затем итерация по всем элементам, например:
Кода -копия выглядит следующим образом:
$.
console.log (index + ':' + value);
});
//или
$ ('li'). Каждый (function (index) {
console.log (index + ':' + $ (this) .text ());
});
Суммировать
Сценарий использования итератора: результаты набора часто различаются по -разному. Мы не хотим выставлять его внутреннюю структуру, но мы также позволяем клиентскому коду прозрачно получить доступ к элементам. В этом случае мы можем использовать режим итератора.