einführen
Iteratormodus: Bietet eine Methode, um einzelne Elemente in einem aggregierten Objekt zu bestellen, ohne die interne Darstellung des Objekts freizulegen.
Mehrere Merkmale der Iteratoren sind:
1. Zugriff auf den Inhalt eines aggregierten Objekts, ohne seine interne Darstellung aufzudecken.
2. Bereiten Sie eine einheitliche Schnittstelle zum Durchqueren verschiedener Sammlungsstrukturen bereit, wodurch der gleiche Algorithmus für die Arbeit auf verschiedenen Sammelstrukturen unterstützt wird.
3. Ändern der Sammelstruktur, in der sich der Iterator während des Durchquerens befindet, kann zu Problemen führen (z. B. darf das Element in der Foreach in C#nicht geändert werden).
Text
Im Allgemeinen müssen wir mindestens 2 Methoden haben, HasNext () und Next (), damit wir alle Objekte durchqueren können. Lassen Sie uns zunächst ein Beispiel geben:
Die Codekopie lautet wie folgt:
var agg = (function () {
var index = 0,,
Daten = [1, 2, 3, 4, 5],
Länge = Daten.Length;
zurückkehren {
Weiter: function () {
var Element;
if (! this.hasnext ()) {
null zurückkehren;
}
Element = Data [Index];
Index = Index + 2;
Rückgabeelement;
},
HasNext: function () {
Rückgabeindex <Länge;
},
Rückspulen: function () {
Index = 0;
},
Strom: function () {
Returndaten [Index];
}
};
} ());
Die Verwendungsmethode ist die gleiche wie in C#:
Die Codekopie lautet wie folgt:
// Das Ergebnis der Iteration ist: 1, 3, 5
while (agg.hasnext ()) {
console.log (Agg.Next ());
}
Natürlich können Sie die Daten auch durch zusätzliche Methoden zurücksetzen und dann mit anderen Vorgängen fortfahren:
Die Codekopie lautet wie folgt:
// Zurücksetzen
Agg.rewind ();
console.log (agg.current ()); // 1
JQuery -Anwendungsbeispiel
Ein sehr berühmter Iterator in JQuery ist die $ .ach -Methode. Durch jedes können wir eine zusätzliche Funktion übergeben und dann alle Elementelemente iterieren, zum Beispiel:
Die Codekopie lautet wie folgt:
$ .each (['Dudu', 'Dudu', 'Joghurt Little Girl', 'diese MM'], Funktion (Index, Wert) {
console.log (index + ':' + value);
});
//oder
$ ('li'). Jede (Funktion (Index) {
console.log (index + ':' + $ (this) .Text ());
});
Zusammenfassen
Das U -Iterator -Szenario lautet: Die Ergebnisse des Satzes variieren häufig auf unterschiedliche Weise. Wir möchten seine interne Struktur nicht freilegen, lassen aber auch den Client -Code transparent auf die Elemente zugreifen. In diesem Fall können wir den Iteratormodus verwenden.