แนะนำ
โหมดตัววนซ้ำ: จัดเตรียมวิธีการสั่งซื้อองค์ประกอบแต่ละอย่างในวัตถุรวมโดยไม่เปิดเผยการเป็นตัวแทนภายในของวัตถุ
คุณลักษณะหลายอย่างของตัววนซ้ำคือ:
1. เข้าถึงเนื้อหาของวัตถุรวมโดยไม่เปิดเผยการเป็นตัวแทนภายใน
2. จัดเตรียมอินเทอร์เฟซแบบครบวงจรสำหรับการสำรวจโครงสร้างการรวบรวมที่แตกต่างกันซึ่งจะสนับสนุนอัลกอริทึมเดียวกันเพื่อทำงานในโครงสร้างการรวบรวมที่แตกต่างกัน
3. การเปลี่ยนโครงสร้างการรวบรวมที่ตัววนซ้ำอยู่ในขณะที่การสำรวจอาจทำให้เกิดปัญหา (ตัวอย่างเช่นรายการไม่ได้รับอนุญาตให้แก้ไขใน foreach ใน C#)
ข้อความ
โดยทั่วไปการทำซ้ำเราจำเป็นต้องมีวิธีการอย่างน้อย 2 วิธี Hasnext () และถัดไป () เพื่อให้เราสามารถสำรวจวัตถุทั้งหมดได้ ก่อนอื่นให้ยกตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
var agg = (function () {
ดัชนี var = 0,
data = [1, 2, 3, 4, 5]
ความยาว = data.length;
กลับ {
ถัดไป: function () {
องค์ประกอบ var;
ถ้า (! this.hasnext ()) {
คืนค่า null;
-
องค์ประกอบ = ข้อมูล [ดัชนี];
ดัชนี = ดัชนี + 2;
องค์ประกอบกลับ;
-
hasnext: function () {
ดัชนีคืน <ความยาว;
-
rewind: function () {
ดัชนี = 0;
-
ปัจจุบัน: ฟังก์ชัน () {
ส่งคืนข้อมูล [ดัชนี];
-
-
-
วิธีการใช้งานเหมือนกับใน C#:
การคัดลอกรหัสมีดังนี้:
// ผลลัพธ์ของการทำซ้ำคือ: 1, 3, 5
ในขณะที่ (agg.hasnext ()) {
console.log (agg.next ());
-
แน่นอนคุณสามารถรีเซ็ตข้อมูลด้วยวิธีการเพิ่มเติมแล้วดำเนินการต่อด้วยการดำเนินการอื่น ๆ :
การคัดลอกรหัสมีดังนี้:
// รีเซ็ต
agg.rewind ();
console.log (agg.current ()); // 1
ตัวอย่างแอปพลิเคชัน jQuery
ตัววนซ้ำที่มีชื่อเสียงมากใน jQuery เป็นวิธี $ .each ผ่านแต่ละรายการเราสามารถผ่านฟังก์ชั่นเพิ่มเติมจากนั้นทำซ้ำในรายการทั้งหมดเช่น:
การคัดลอกรหัสมีดังนี้:
$ .Each (['Dudu', 'Dudu', 'Yogurt Little Girl', 'MM'], ฟังก์ชั่น (ดัชนี, ค่า) {
console.log (ดัชนี + ':' + ค่า);
-
//หรือ
$ ('li'). แต่ละ (ฟังก์ชั่น (ดัชนี) {
console.log (ดัชนี + ':' + $ (this) .text ());
-
สรุป
สถานการณ์การใช้งานของตัววนซ้ำคือ: ผลลัพธ์ของชุดมักจะแตกต่างกันไปในรูปแบบที่แตกต่างกัน เราไม่ต้องการเปิดเผยโครงสร้างภายใน แต่เรายังให้รหัสลูกค้าเข้าถึงองค์ประกอบอย่างโปร่งใส ในกรณีนี้เราสามารถใช้โหมดตัววนซ้ำ