89- دروس جافا سكربت – الكلاسات او الفئات – JS Class Static

### الفهم العميق للـ Static في الصفوف (Classes) بلغة JavaScript

في لغة JavaScript، تُستخدم الصفوف (Classes) كوسيلة لإنشاء كائنات متقدمة، وهي جزء من النمط البرمجي الذي يتبع الكائنات (Object-Oriented Programming). من بين الميزات المهمة في الصفوف، نجد الخاصية أو الأسلوب الذي يُعرف [شركة برمجة مصرية] بـ “static”. في هذا المقال، سنستعرض مفهوم الـ static في الصفوف وكيفية استخدامها مع أمثلة توضيحية متعددة.

#### ما هو الـ Static في JavaScript؟

الكلمة المفتاحية `static` تُستخدم لتعريف الأساليب أو الخصائص التي تنتمي إلى الصف نفسه وليس إلى الكائنات التي تُنشىء منه. هذا يعني أنه يمكنك استدعاء هذه الأساليب أو الخصائص مباشرةً من الصف، دون الحاجة إلى إنشاء كائن منه.

#### لماذا نستخدم Static؟

1. **تنظيم الكود**: يساعد `static` في تنظيم الكود عن طريق تجميع الوظائف التي ترتبط بالصف، وليس بالكائنات الفردية.
2. **الذاكرة**: تخزين الوظائف المشتركة كـ static يمكن أن يساعد في تقليل استخدام الذاكرة، حيث لا يتم إنشاء نسخة من الأسلوب لكل كائن.
3. **الوظائف المساعدة**: غالبًا ما تُستخدم الأساليب `static` في إنشاء وظائف مساعدة أو أدوات لا تحتاج إلى بيانات الحالة الخاصة بالكائن.

#### كيفية تعريف واستخدام Static

لإنشاء أسلوب أو خاصية `static`، تُضاف الكلمة المفتاحية `static` قبل تعريف الأسلوب أو الخاصية.

class Calculator {
  static add(a, b) {
    return a + b;
  }

  static subtract(a, b) {
    return a - b;
  }
}

// استخدام الأساليب static
console.log(Calculator.add(5, 3));       // Output: 8
console.log(Calculator.subtract(5, 3));  // Output: 2

في هذا المثال، `add` و `subtract` هما أسلوبان `static` يمكن استدعاؤهما مباشرة من الصف `Calculator`، دون الحاجة إلى إنشاء كائن منه.

#### الخصائص Static

يمكن أيضًا تعريف خصائص `static` بنفس الطريقة.

class Circle {
  static pi = 3.14159;

  static calculateArea(radius) {
    return this.pi * radius * radius;
  }
}

console.log(Circle.pi);                   // Output: 3.14159
console.log(Circle.calculateArea(5));     // Output: 78.53975

في هذا المثال، `pi` هي خاصية `static` تُستخدم في الحساب داخل الأسلوب `calculateArea`.

#### ملاحظات هامة

– لا يمكن الوصول إلى الخصائص أو الأساليب `static` من خلال كائنات الصف، بل يجب الوصول إليها عبر الصف نفسه.
– تذكر أن الأساليب `static` لا تستطيع الوصول إلى الخصائص غير الثابتة (non-static) للصف، لأنها ليست جزءًا من أي كائن معين.

#### مثال متقدم

لنفترض أننا نريد إنشاء صف يمثل مكتبة مع أساليب للتحقق من صحة الكتب بناءً على قواعد معينة.

class Library {
  static isValidISBN(isbn) {
    return typeof isbn === 'string' && isbn.length === 13;
  }

  static isValidTitle(title) {
    return typeof title === 'string' && title.length > 0;
  }
}

console.log(Library.isValidISBN('1234567890123')); // Output: true
console.log(Library.isValidISBN(1234567890123));   // Output: false
console.log(Library.isValidTitle('JavaScript Guide')); // Output: true

في هذا المثال، لدينا أسلوبان `static` للتحقق من صحة رقم الـ ISBN وعنوان الكتاب. هذه الأساليب تساعد في ضمان أن البيانات المرتبطة بالكتب صحيحة قبل إضافتها إلى المكتبة.

### الخلاصة [شركة برمجة مصرية]

الأساليب والخصائص `static` في JavaScript توفر طريقة فعالة لإضافة وظائف تتعلق بالصف ككل، بدلاً من الكائنات الفردية. إنها أداة مهمة في تنظيم الكود، تحسين الأداء، وتقليل استخدام الذاكرة. فهم كيفية استخدام `static` بشكل صحيح يمكن أن يعزز من فعالية التطبيقات البرمجية ويساعد في الحفاظ على هيكل برمجي منطقي ومنظم.