التطبيق الجزئي
ثبّتوا بعض الوسائط وأعيدوا استخدام الدوال.
التطبيق الجزئي درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ما التطبيق الجزئي
يعني التطبيق الجزئي أخذ دالة تحتاج إلى عدة معاملات وتثبيت بعضها مسبقًا، لإنتاج دالة جديدة لا تحتاج إلا إلى المعاملات المتبقية.
يتيح لكم ذلك إنشاء دوال متخصصة انطلاقًا من دوال عامة. فيمكن أن تتحول multiply(a, b) العامة إلى double(b) المتخصصة بتثبيت a = 2.
دالة ذات معاملات متعددة
ابدؤوا بدالة متعددة الأغراض. تتلقى add هنا ثلاثة أعداد. وغالبًا ما تستدعونها مرارًا باستخدام المعامل الأول نفسه.
function add(a, b, c) {
return a + b + c;
}
console.log(add(1, 2, 3));
console.log(add(1, 10, 100));تثبيت المعاملات يدويًا
أبسط تطبيق جزئي هو مجرد دالة تغليف تثبّت أحد المعاملات مسبقًا وتمرر المعاملات المتبقية.
function add(a, b, c) {
return a + b + c;
}
function addTen(b, c) {
return add(10, b, c);
}
console.log(addTen(2, 3));
console.log(addTen(20, 30));التطبيق الجزئي باستخدام bind
صُممت Function.prototype.bind لهذا الغرض. يضبط معاملها الأول قيمة this؛ وكل معامل يليه يكون مملوءًا مسبقًا من اليسار.
مرّروا null إلى this عندما لا تكون قيمته مهمة لكم.
function add(a, b, c) {
return a + b + c;
}
const addTen = add.bind(null, 10);
console.log(addTen(2, 3));
console.log(addTen(20, 30));تثبيت أكثر من معامل
يمكنكم تثبيت عدة معاملات بادئة في الوقت نفسه. وتتلقى الدالة المُعادة كل ما تبقى.
function add(a, b, c) {
return a + b + c;
}
const addElevenAndTwo = add.bind(null, 11, 2);
console.log(addElevenAndTwo(7));
console.log(addElevenAndTwo(100));مساعد partial قابل لإعادة الاستخدام
يمكنكم كتابة partial خاص بكم، يلتقط المعاملات المحددة مسبقًا باستخدام معامل rest ويدمجها مع المعاملات اللاحقة باستخدام spread.
function partial(fn, ...preset) {
return function (...later) {
return fn(...preset, ...later);
};
}
function greet(greeting, name) {
return greeting + ', ' + name + '!';
}
const sayHello = partial(greet, 'Hello');
console.log(sayHello('Ada'));
console.log(sayHello('Linus'));تخصيص الدوال العامة
يتألق التطبيق الجزئي عندما تنتج دالة عامة واحدة العديد من الدوال المتخصصة الصغيرة والواضحة.
function multiply(a, b) {
return a * b;
}
const double = multiply.bind(null, 2);
const triple = multiply.bind(null, 3);
console.log(double(5));
console.log(triple(5));التطبيق الجزئي مع المصفوفات
تُقرأ الدوال المتخصصة بوضوح داخل طرائق المصفوفات مثل map.
function power(exponent, base) {
return Math.pow(base, exponent);
}
const square = power.bind(null, 2);
console.log([1, 2, 3, 4].map(square));ملء الإعدادات مسبقًا
من الاستخدامات الشائعة في الواقع تثبيت قيمة إعداد، مثل معدل ضريبة أو رمز عملة، ثم إعادة استخدام النتيجة في كل مكان.
function format(symbol, amount) {
return symbol + amount.toFixed(2);
}
const usd = format.bind(null, '$');
const eur = format.bind(null, '\u20AC');
console.log(usd(9.5));
console.log(eur(9.5));التطبيق الجزئي مقابل المعاملات الافتراضية
توفر المعاملات الافتراضية قيمة بديلة عندما يكون المعامل مفقودًا. أما التطبيق الجزئي فييثبّت قيمة بحيث لا يعود بإمكان المستدعي تغييرها في ذلك الموضع.
إنهما يحلان مشكلتين مختلفتين: القيم الافتراضية اختيارية، أما التطبيق الجزئي فقيمه ثابتة.
function log(level, message) {
return '[' + level + '] ' + message;
}
const error = log.bind(null, 'ERROR');
console.log(error('Disk full'));
console.log(error('Timeout'));أهمية التطبيق الجزئي
يقلل التطبيق الجزئي التكرار، ويوضح الغرض، ويشكّل أساس التكاري. وعندما تواصلون تمرير المعامل الأول نفسه، فكّروا في تثبيته مرة واحدة.
function between(min, max, value) {
return value >= min && value <= max;
}
const isPercentage = between.bind(null, 0, 100);
console.log(isPercentage(50));
console.log(isPercentage(150));تحقق سريع
ماذا تُعيد fn.bind(null, 5)؟
مراجعة: التطبيق الجزئي
لقد تعلمتم تثبيت المعاملات مسبقًا:
- تثبّت دوال التغليف اليدوية أحد المعاملات وتمرر الباقي.
- تملأ bind(null, ...args) المعاملات مسبقًا من اليسار.
- يستخدم مساعد
partialمخصص معاملي rest وspread. - ينشئ التطبيق الجزئي دوال متخصصة واضحة وقابلة لإعادة الاستخدام، ويمهّد الطريق للتكاري.
الأسئلة الشائعة
هل درس «التطبيق الجزئي» مجاني؟
نعم — نص درس «التطبيق الجزئي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.
ماذا ستتعلم في «التطبيق الجزئي»؟
ثبّتوا بعض الوسائط وأعيدوا استخدام الدوال. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «التطبيق الجزئي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.