Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

نمط تسلسل الميثودات

جزء من قسم 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 من كل دالة تريدها أن تكون قابلة للتسلسل.

challenge icon

التحدي

لقد تم إعطاؤك كائن 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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming