0Pricing
JavaScript Academy · درس

نمط الوحدة (IIFE)

غلّفوا التعليمات البرمجية باستخدام دوال تُستدعى فورًا.

نمط الوحدة (IIFE) درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ما المشكلة التي يحلها نمط الوحدات

قبل وحدات ES، أتاح نمط الوحدات تجميع الحالة والسلوك المرتبطين مع إبقاء التفاصيل الداخلية خاصة وعرض واجهة API عامة ونظيفة. وهو مبني على الإغلاقات.

دالة IIFE

إن IIFE (تعبير الدالة المُستدعى فورًا) هي دالة تُنفَّذ لحظة تعريفها. ويؤدي وضعها بين قوسين واستدعاؤها إلى إنشاء نطاق خاص على الفور.

const result = (function () {
  return 42;
})();
console.log(result); // 42

لماذا نُنفّذها فورًا

توفر IIFE نطاقًا خاصًا يُستخدم مرة واحدة، من دون ترك دالة مسماة غير مستخدمة. وكل ما بداخلها معزول عن النطاق العام.

(function () {
  const temp = "not global";
  console.log(temp);
})();
// temp is unreachable out here

إعادة واجهة API عامة

نمط الوحدات هو IIFE تُعيد كائنًا. وتكون طرائق الكائن إغلاقات على المتغيرات الخاصة، فتشكّل الواجهة العامة.

const counter = (function () {
  let count = 0; // private
  return {
    inc: () => ++count,
    value: () => count
  };
})();
counter.inc();
console.log(counter.value()); // 1

خاص مقابل عام

كل ما يُعرَّف في الداخل ولا يُعاد يظل خاصًا. ولا يمكن الوصول إلا إلى ما تضعونه في الكائن المُعاد.

const calc = (function () {
  const pi = 3.14159; // private constant
  return {
    area: (r) => pi * r * r
  };
})();
console.log(calc.area(2)); // 12.56636
console.log(calc.pi);      // undefined

دوال مساعدة خاصة

يمكن أن توجد الدوال المساعدة داخل الوحدة، فتستخدمها الطرائق العامة من دون عرضها مطلقًا.

const validator = (function () {
  const clean = (s) => s.trim().toLowerCase(); // private
  return {
    isEmail: (s) => clean(s).includes("@")
  };
})();
console.log(validator.isEmail(" A@B.com ")); // true

نمط الوحدات الكاشف

يعرّف أحد الأنواع الشائعة جميع الدوال على أنها خاصة، ثم يُعيد كائنًا «يكشف» مراجع إلى الدوال العامة. ويساعد ذلك على إبقاء قائمة واجهة API العامة واضحة في الأسفل.

const store = (function () {
  let items = [];
  function add(x) { items.push(x); }
  function count() { return items.length; }
  return { add, count }; // reveal
})();
store.add("a");
console.log(store.count()); // 1

المثيلات المفردة

بما أن IIFE تُنفَّذ مرة واحدة، تكون الوحدة فعليًا مثيلًا مفردًا: مثيل واحد بالضبط، مع مجموعة واحدة من الحالة الخاصة.

const config = (function () {
  let settings = { theme: "dark" };
  return {
    get: (k) => settings[k],
    set: (k, v) => { settings[k] = v; }
  };
})();
config.set("theme", "light");
console.log(config.get("theme")); // "light"

تمرير التبعيات

يمكنكم تمرير الكائنات العامة أو الوحدات الأخرى كوسائط إلى IIFE، مما يجعل التبعيات صريحة ويتيح التصغير الآمن.

const mathUtils = (function (M) {
  return { roundUp: (n) => M.ceil(n) };
})(Math);
console.log(mathUtils.roundUp(4.1)); // 5

تجنب تلويث النطاق العام

الهدف كله هو استخدام اسم عام واحد (للوحدة) بدلًا من عشرات المتغيرات المنفصلة. ويمنع ذلك تعارضات الأسماء بين البرامج النصية.

العلاقة بوحدات ES

توفّر import/export اليوم نطاق وحدة حقيقيًا على مستوى اللغة، وقد حلت إلى حد كبير محل هذا النمط. لكن فهم وحدات IIFE يوضح كيفية عمل الخصوصية والتغليف، وستصادفونها أيضًا في الشيفرة القديمة.

تحقق سريع

نمط الوحدات وIIFE

مراجعة

يستخدم نمط الوحدات IIFE لإنشاء نطاق خاص، ثم يُعيد كائنًا تكون طرائقه إغلاقات على حالة مخفية. تظل التفاصيل الداخلية خاصة، ولا تكون عامة إلا الأعضاء المُعادة. وتوضح الأنواع المختلفة، مثل نمط الوحدات الكاشف، واجهة API، كما تعمل الوحدات كمثيلات مفردة. تحل import/export في ES الآن محل هذا النمط، لكنها مبنية على الأفكار نفسها.

الأسئلة الشائعة

هل درس «نمط الوحدة (IIFE)» مجاني؟

نعم — نص درس «نمط الوحدة (IIFE)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «نمط الوحدة (IIFE)»؟

غلّفوا التعليمات البرمجية باستخدام دوال تُستدعى فورًا. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «نمط الوحدة (IIFE)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. كيفية التقاط الإغلاقات للحالة
  2. المتغيرات الخاصة باستخدام الإغلاقات
  3. نمط الوحدة (IIFE)
  4. دوال المُنشئ
← العودة إلى JavaScript Academy