نمط تسلسل الميثودات
جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 16 من 56.
تسلسل الدوال (Method chaining) هو نمط برمجي يتيح لك استدعاء دوال متعددة على نفس الكائن في جملة برمجية واحدة. تقوم كل دالة بإعادة الكائن نفسه (this)، مما يتيح لك استدعاء الدالة التالية في نفس السطر.
أنشئ كائن عداد بسيط:
const counter = {
count: 0,
increment() {
this.count++;
return this;
},
decrement() {
this.count--;
return this;
},
getValue() {
return this.count;
}
};الآن يمكنك ربط الأساليب (methods) معاً:
// ربط عمليات متعددة
counter.increment().increment().decrement();
// العدد الآن هو 1
console.log(counter.getValue()); // النتيجة: 1المفتاح لتسلسل الدوال (method chaining) هو إرجاع this من كل دالة تريدها أن تكون قابلة للتسلسل.
التحدي
لقد تم إعطاؤك كائن calculator يحتوي بالفعل على التابعين add() و subtract(). مهمتك هي إضافة التابعين multiply و divide اللذين يعيدان this لتمكين التسلسل (chaining).
ورقة مرجعية
يسمح لك تسلسل الأساليب (Method chaining) باستدعاء عدة أساليب على نفس الكائن في عبارة برمجية واحدة. يعيد كل أسلوب الكائن نفسه (this)، مما يتيح استدعاء الأسلوب التالي في نفس السطر.
لتمكين تسلسل الأساليب، قم بإرجاع this من كل أسلوب:
const counter = {
count: 0,
increment() {
this.count++;
return this;
},
decrement() {
this.count--;
return this;
},
getValue() {
return this.count;
}
};قم بتسلسل عدة أساليب معاً:
counter.increment().increment().decrement();
console.log(counter.getValue()); // النتيجة: 1جرّب بنفسك
import { calculator } from './calculator.js';
// كود الاختبار - لا تقم بالتعديل
const result1 = calculator.add(10).multiply(2).getValue();
console.log(result1); // يجب أن تكون النتيجة 20
// إعادة التعيين للاختبار الثاني
calculator.value = 0;
const result2 = calculator.add(20).divide(4).subtract(1).getValue();
console.log(result2); // يجب أن تكون النتيجة 4يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1الكائنات والكلمة المفتاحية this
مراجعة سريعة: الكائناتإضافة Methods إلى الكائناتفهم الكلمة المفتاحية thisConstructor Functionsالكلمة المفتاحية newتحدي المراجعة7الوراثة والكلمة المفتاحية extends
الوراثةعلاقة "is-a"الكلمة المفتاحية extendsالدالة super()وراثة الخصائص والوظائفتحدي المراجعة2تنظيم الكود
ما هي الـ Modules؟التصدير باستخدام exportالاستيراد باستخدام importالـ Default مقابل الـ Named Exports8تنظيم كود OOP
تنظيم الـ Classes في Modules11مشروع: مصيّر الأشكال
إعداد: فئة Shape والتصديروراثة فئة Circle