بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة
تجنبوا this بتمرير البيانات صراحةً واستخدام الإغلاقات والمساعدات الصغيرة؛ واكتبوا دوال صغيرة سهلة القراءة
بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
لماذا البدائل الوظيفية؟
الهدف: تجاوز this عندما يسبب ارتباكًا.
- الدوال النقية: مرّر البيانات كوسائط
- الإغلاقات: التقط القيم مرة واحدة ثم أعد استخدامها
- دوال مصنع صغيرة
- دوال مساعدة صغيرة وواضحة للمبتدئين

الدالة النقية بدلًا من this
تقرأ الدالة النقية المدخلات وتُرجع قيمة. لا تحتوي على this مخفي، لذا يسهل اختبارها.
// Pure function: takes data as parameters
function fullName(user) {
// no this; explicit inputs
return user.first + " " + user.last;
}
const u = { first: "Ayla", last: "Kaya" };
console.log("fullName:", fullName(u));

دالة مساعدة تعتمد على الإغلاق
يخزّن الإغلاق السياق من دون this. تلتقط القيم مرة واحدة، ثم تستدعي الدالة المساعدة مرات عديدة.
// Closure: capture config and return a tiny helper
function makeGreeter(prefix) {
// returns a function that remembers prefix
return function (name) {
return prefix + " " + name;
};
}
const hi = makeGreeter("Hello");
console.log(hi("Ayla")); // "Hello Ayla"
console.log(hi("Mila")); // "Hello Mila"

دالة مصنع من دون this
تخفي دالة مصنع صغيرة الحالة داخل إغلاق؛ ولا تتطلب this. أساليبها صغيرة ومركّزة.
// Factory pattern: build an object with simple, pure-like methods
function makeCounter(start) {
let value = Number.isFinite(start) ? start : 0;
return {
get: function () { return value; }, // read
inc: function () { value = value + 1; } // update (encapsulated)
};
}
const c = makeCounter(2);
c.inc();
console.log("counter:", c.get()); // 3

تركيب دوال مساعدة صغيرة
تترابط الدوال المساعدة الصغيرة المعتمدة على الوسائط بسهولة. ولا حاجة إلى خطوات ربط.
// Compose small helpers: map + filter as plain functions
function isAdult(user) { return user.age >= 18; }
function toLabel(user) { return user.name + " (" + user.age + ")"; }
const people = [
{ name: "Ayla", age: 18 },
{ name: "Mert", age: 16 },
{ name: "Lina", age: 21 }
];
const labels = people.filter(isAdult).map(toLabel);
console.log("labels:", labels);

اختيار الأسلوب
اختر الأسلوب الوظيفي عندما:
- يمكن أن تكون الدالة نقية (مما يسهل اختبارها)
- تحتاج إلى بضع قيم فقط (التقطها باستخدام إغلاق)
- تكون البساطة مهمة للمبتدئين
- تريد تجنّب مشكلات this تمامًا

اختبار البديل الوظيفي
فحص سريع: تجنّب أخطاء this.

مراجعة
مراجعة: فضّل استخدام الدوال النقية مع الوسائط الصريحة؛ واستخدم الإغلاقات أو دوال المصنع الصغيرة لإدارة حالة محدودة. الدوال المساعدة التي لا تعتمد على this بسيطة وقابلة للاختبار وملائمة للمبتدئين.

الأسئلة الشائعة
هل درس «بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة» مجاني؟
نعم — نص درس «بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة»؟
تجنبوا this بتمرير البيانات صراحةً واستخدام الإغلاقات والمساعدات الصغيرة؛ واكتبوا دوال صغيرة سهلة القراءة تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية
- مطبات استخراج methods والتطبيق الجزئي
- بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة