0Pricing
JavaScript Academy · درس

مطبات استخراج methods والتطبيق الجزئي

أصلحوا مشكلات استخراج methods باستخدام call/apply/bind، وتعلّموا أنماطًا صغيرة للتطبيق الجزئي باستخدام bind والدوال السهمية المغلّفة

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

الصورة العامة

الهدف: الحفاظ على ثبات this بعد الاستخراج، وملء الوسائط مسبقًا.

  • call(thisArg, a, b)
  • apply(thisArg, [a, b])
  • bind(thisArg, a) → يعيد دالة جديدة
  • التطبيق الجزئي باستخدام bind أو دالة سهمية صغيرة
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 1

مشكلة استخراج الدالة

يعمل الاستدعاء بالشكل obj.method()، لكن استخراج الدالة يفقد الكائن ويعطّل this.

// Extraction loses this
const user = {
  name: "Ayla",
  label: function (prefix) {
    return prefix + ":" + this.name;
  }
};

console.log("method call:", user.label("Hi")); // "Hi:Ayla"

// Extract
const f = user.label;
console.log("extracted:", f("Hi")); // this is missing -> "Hi:undefined" (in strict mode this is undefined)
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 2

استخدام call/apply لمرة واحدة

يتيح لك call وapply تعيين this لاستدعاء واحد.

// Fix by passing this explicitly using call/apply
console.log("call :", f.call(user, "Hi"));   // "Hi:Ayla"
console.log("apply:", f.apply(user, ["Yo"])); // "Yo:Ayla"
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 3

استخدام bind لإعادة الاستخدام

ينشئ bind دالة تتذكر قيمة this. استدعها مرات عديدة من دون إعادة ربطها.

// bind returns a new function with this fixed
const bound = f.bind(user);
console.log("bound once:", bound("Hey")); // "Hey:Ayla"
console.log("bound again:", bound("Yo")); // "Yo:Ayla"
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 4

التطبيق الجزئي (ببساطة)

استخدم bind لملء الوسائط الأولى مسبقًا، أو استخدم غلافًا بدالة سهمية صغيرة لتثبيت القيم وthis.

// Partial application: pre-fill arguments
function add(a, b, c) { return a + b + c; }

// Using bind: pre-fill a=10
const add10 = add.bind(null, 10);
console.log("add10(1,2):", add10(1, 2)); // 13

// Using an arrow wrapper: pre-fill prefix
const labelHi = function (obj) {
  return function () { return obj.label("Hi"); };
}(user);

console.log("arrow partial:", labelHi()); // "Hi:Ayla"
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 5

أنماط عملية

نصائح:

  • الطرائق المستخرجة: استخدم bind مرة واحدة ثم أعد استخدام النتيجة.
  • الاستدعاءات لمرة واحدة: استخدم call/apply.
  • هل تحتاج إلى ملء وسائط مسبقًا؟ استخدم bind أو غلافًا بدالة سهمية صغيرة.
  • أبقِ الدوال المساعدة صغيرة وسمِّها بوضوح.
مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 6

اختبار bind مقارنةً بـ call/apply

فحص سريع: الحفاظ على this وملء الوسائط مسبقًا.

مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 7

مراجعة

مراجعة: يؤدي الاستخراج إلى فقدان this. استخدم call/apply للاستدعاءات لمرة واحدة، واستخدم bind لتثبيت this وإعادة الاستخدام. في التطبيق الجزئي، استخدم bind أو دالة سهمية صغيرة لملء القيم مسبقًا.

مطبات استخراج methods والتطبيق الجزئي — رسم توضيحي 8

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

هل درس «مطبات استخراج methods والتطبيق الجزئي» مجاني؟

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

ماذا ستتعلم في «مطبات استخراج methods والتطبيق الجزئي»؟

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

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

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

كم من الوقت يستغرق درس «مطبات استخراج methods والتطبيق الجزئي»؟

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

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

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

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

  1. this المعجمي مقابل الديناميكي، ومراجعة الدوال السهمية
  2. مطبات استخراج methods والتطبيق الجزئي
  3. بدائل البرمجة الوظيفية — تمرير السياق والإغلاقات والمساعدات الصغيرة
← العودة إلى JavaScript Academy