التكرار هو كائن يمكنه الوصول إلى مجموعات البيانات بالتسلسل. واحدة من واجهات برمجة التطبيقات النموذجية هي الطريقة التالية. هذه الطريقة تحصل على القيمة التالية في التسلسل.
مثال ITERATOR
الموضوع: آمل أن أكتب وظيفة مريحة يمكن أن تأخذ أي عدد من المعلمات وإنشاء مكرر لهذه القيم.
رمز الاختبار جيد:
var it = القيم (،،،، ،) ؛ it.next () ؛ // it.next () ؛ // it.next () ؛ // it.next () ؛ //
التحليل: نظرًا لأن وظيفة القيم تحتاج إلى تلقي أي معلمات متعددة ، نحتاج إلى استخدام طريقة إنشاء وظيفة مع معلمات متغيرة المذكورة في القسم السابق. ثم يكرر كائن التكرار داخل عناصر كائن الوسائط.
رمز أولي
قيم الدالة () {var i = ، n = enduces.length ؛ return {hasnext: function () {return i <n ؛} ، التالي: function () {if (this.hasnext ()) {return arguments [i ++] ؛} رمي خطأ جديد ("لقد وصلت إلى النهاية") ؛}}}}}}}}}}}}اختبار مع رمز الاختبار أعلاه
var it = القيم (،،،، ،) ؛ it.next () ؛ // undefiniDit.next () ؛ // undefinedit.next () ؛ // undefinedit.next () ؛ // undefined
تحليل الخطأ
نتيجة تشغيل الكود غير صحيحة ، لذلك سيتم تحليل برنامج الترميز الأولي أدناه.
قيم الوظيفة () {var i = ، n = endress. } رمي خطأ جديد ("لقد وصلت إلى النهاية") ؛}}}يشبه الخطأ المرجعي هنا إلى حد كبير كائن آخر يحفز الصداع. عند التعامل مع هذا الإشارة ، عادة ما يكون استخدام المتغيرات وحفظ هذا الصحيح. ثم استخدم هذا المتغير في مكان آخر. ثم يتم إصدار حل كائن الوسائط ، باستخدام متغير لتخزينه ، لذلك لا توجد مشكلة في الإشارة إلى كائن الوسائط.
الترميز مرة أخرى
قيم الدالة () {var i = ، n = endress.قم بتشغيل رمز الاختبار
var it = القيم (،،،، ،) ؛ it.next () ؛ // it.next () ؛ // it.next () ؛ // it.next () ؛ //
النتائج هي نفسها كما هو متوقع.
تَلمِيح
احذر من التسلسل الهرمي للوظيفة عند الإشارة إلى الحجج
ربط مرجعًا محددًا بشكل صريح لمتغير الوسائط بحيث يمكن الرجوع إليه في وظيفة متداخلة
التذييل 1: إيتراتور
تسمى التكرار في بعض الأحيان المؤشرات. إنها أنماط تصميم البرمجيات للبرمجة ، والواجهات التي يمكن اجتيازها على الحاويات ، ولا يحتاج المصممون إلى الاهتمام بمحتوى الحاويات.
مخطط فئة ITERATOR UML
ITERATOR JS تنفيذ
لدي القليل من الفهم لنموذج التصميم ، ولكن في مشاريع محددة ، هناك العديد من نماذج المصنع ، نادراً ما يتم استخدامها. فيما يلي تطبيق بسيط. هناك شيء خاطئ. مرحبا بكم في التواصل.
الرمز كما يلي
قائمة الوظائف () {this.data = [] ؛} list.prototype = {add: function () {var args = [] } ، إزالة: function (i) {this.data.splice (i ،) ؛} ، iterator: function () {return new iterator (this) ؛}} وظيفة ITerator (list) {this.list = list ؛ this.cur = ؛ هذا. it = list.iterator () ؛ list.add (،،،،،،) ؛ it.next () ؛ // it.next () ؛ // it.next () ؛ //ما سبق هو طريقة استخدام المتغيرات لحفظ كائنات الوسائط في JS المقدمة لك. آمل أن يكون ذلك مفيدًا للجميع!