لقد أسفرت مواصفات مسودة ECMAScript 6 عن الكثير من مصادر البهجة لمطور JavaScript الحديث. لقد تناولنا بعض فئات المجموعات الجديدة وتكرارات التكرار for..of
في مشاركة سابقة. في هذه المشاركة، سنتحدث عن أيّ شيء مرتبط مع حلقات for..of
: دوال المنشئ.
هناك مضيف يتضمّن مواد رائعة توضّح سبب استخدام المنشئات وكيفية استخدامها. باختصار، المولدات هي دوال خاصة تنشئ مكررات، والمكررات هي كائنات لها طريقة next()
والتي يمكن طلبها للحصول على قيمة. في دالة المنشئ، توفر الكلمة الرئيسية yield
قيمة next()
. يؤدي استخدام yield
تعليق تنفيذ دالة المنشئ، إلى الحفاظ على الحالة حتى يتم استدعاء next()
مرة أخرى، وعندها يبدأ الرمز في الاحتفاظ بنسخة احتياطية ويتابع إلى أن yield
تكون قيمة أخرى (أو إلى أن يتم إنهاء دالة المنشئ). هناك العديد من حالات الاستخدام الأساسية لدوال المنشئ، مثل استخدامها لتكرار الأرقام في تسلسل فيبوناتشي.
بعد أن أطلعناك على الأساسيات، لنتعرّف بالتفصيل على نموذج من JavaScript يتضمّن بعض المشاكل البسيطة في العمل مع المنشئين. وهناك تعليقات كثيرة على موقعك الإلكتروني، ويمكنك تعديل الإصدار المباشر من الرمز قبل قراءته:
إذًا، ما هي بعض الخلاصات الكبيرة التي يستند إليها الرمز؟
أولهما، ينتج عن إنشاء مولِّد تكرار فريد له حالته المميزة الخاصة به، ويمكنك تمرير المعلمات إلى منشئ المولد الذي يمكنه التحكم في السلوك.
ثانيًا، يمكنك تمرير معلَمة عند استدعاء طريقة next()
للمكرر، وسيتم تخصيص هذه القيمة إلى أي قيمة على الجانب الأيسر من عبارة yield
من استدعاء المكرر السابق. وتعد هذه طريقة رائعة لتنويع ناتج المكرر، حيث نستخدمه هنا للتحكم في ما إذا كانت الكلمة التي يتم الحصول عليها مكتوبة بأحرف كبيرة أم لا. إذا أردت التأثير في القيمة الأولى التي تم الحصول عليها، يمكنك تنفيذ ذلك عبر إحدى المعلمات في الدالة الإنشائية للمنشئ.
وأخيرًا، يمكن للمولدات إنتاج إما مكررات محدودة أو لانهائية. إذا كنت تستخدم مكرّرًا لانهائيًا، تأكّد من أنّ لديك شرطًا من شروط الطرفية استنادًا إلى القيمة yield
ed، لأنّه من السهل جدًا كتابة تكرارات لانهائية عن طريق الخطأ، وخاصةً عند استخدام for..of
للتكرار. إذا كنت تستخدم مكرّرًا نهائيًا من خلال استدعاء الدالة next()
، ستشير السمة .done
للكائن الذي يعرض إلى ما إذا كان التكرار مكتملاً.
نأمل أن تثير هذه العينة، إلى جانب الموارد الأخرى المتاحة على الويب، بعض الإثارة وأن تجعلك تفكر في كيفية استخدام أدوات المنشئ في التعليمات البرمجية الخاصة بك. إصدارات فايرفوكس تبدأ من 31 وChrome بدءًا من 39 منشئ دعم في الأصل. يقدم مشروع Reمنشئ دعمًا للمتصفحات الأخرى، كما أن استخدام Traceur خيار متاح أيضًا.
نشكر إريك أرفيدسون على مساعدته في مراجعة هذه المقالة.