البرمجة

توابع الأنواع الأولية في جافاسكربت

توابع الأنواع الأولية (Primitive Methods) في جافاسكربت

تعتبر جافاسكربت واحدة من أبرز لغات البرمجة المستخدمة في تطوير الويب، وتمتاز بمرونتها وسهولة تعلمها. تعد الأنواع الأولية (primitives) في جافاسكربت من أهم المفاهيم التي يجب على المبرمجين فهمها بشكل دقيق لأنها تشكل الأساس لمعظم العمليات في اللغة. الأنواع الأولية تتضمن سلاسل النصوص، الأرقام، القيم المنطقية، null, undefined, و symbol، وكل منها يمتلك خصائص وطرق خاصة به. سنتناول في هذا المقال توابع الأنواع الأولية في جافاسكربت، وشرح كيفية استخدامها، وكيف تختلف عن الأنواع المركبة مثل الكائنات (objects) والمصفوفات (arrays).

ما هي الأنواع الأولية في جافاسكربت؟

الأنواع الأولية هي قيم ثابتة لا يمكن تغييرها بعد إنشائها. وهي تشمل:

  1. الأرقام (Number): تمثل الأرقام الصحيحة والعشرية.

  2. سلاسل النصوص (String): تمثل النصوص أو السلاسل الأحرف.

  3. القيم المنطقية (Boolean): تمثل القيم true و false.

  4. null: تمثل القيمة “غير المحددة” أو “اللا شيء”.

  5. undefined: تمثل القيمة التي يتم تعيينها لمتغير لم يتم تعيين قيمة له.

  6. رموز (Symbol): تمثل قيمة فريدة غير قابلة للتكرار، تستخدم غالبًا لإنشاء معرّفات فريدة في الكائنات.

كيفية عمل التوابع مع الأنواع الأولية؟

عند العمل مع الأنواع الأولية في جافاسكربت، يظهر نوع من “السحر” الذي يُسمى التغليف التلقائي (Autoboxing). هذا يعني أن جافاسكربت تقوم بإنشاء كائنات مؤقتة تحتوي على وظائف (توابع) يمكن استخدامها مع الأنواع الأولية.

1. التوابع الخاصة بالأرقام (Number)

تُعتبر الأرقام أحد الأنواع الأولية الأكثر استخدامًا في جافاسكربت، ويمتلك النوع Number العديد من التوابع والخصائص التي تسهل التعامل مع الأرقام. إليك بعض التوابع والخصائص التي تدعمها جافاسكربت:

  • toString(): يقوم بتحويل الرقم إلى سلسلة نصية (String).

    javascript
    let num = 123; console.log(num.toString()); // "123"
  • toFixed(): يستخدم لتحديد عدد الأرقام العشرية في العدد العشري.

    javascript
    let num = 3.14159; console.log(num.toFixed(2)); // "3.14"
  • toPrecision(): يستخدم لتحديد دقة الرقم (عدد الأرقام الكلية).

    javascript
    let num = 123.456; console.log(num.toPrecision(4)); // "123.5"
  • valueOf(): يعيد القيمة الأصلية للعدد.

    javascript
    let num = new Number(10); console.log(num.valueOf()); // 10

2. التوابع الخاصة بسلاسل النصوص (String)

سلاسل النصوص في جافاسكربت هي أيضًا من الأنواع الأولية، ومع ذلك، يمكن استخدام عدد من التوابع عليها. جافاسكربت توفر العديد من التوابع التي تسهل التعامل مع السلاسل النصية:

  • toUpperCase(): يحول جميع الأحرف إلى أحرف كبيرة.

    javascript
    let str = "hello"; console.log(str.toUpperCase()); // "HELLO"
  • toLowerCase(): يحول جميع الأحرف إلى أحرف صغيرة.

    javascript
    let str = "HELLO"; console.log(str.toLowerCase()); // "hello"
  • charAt(): يُرجع الحرف الموجود في الموقع المحدد.

    javascript
    let str = "hello"; console.log(str.charAt(1)); // "e"
  • includes(): يتحقق مما إذا كانت السلسلة تحتوي على جزء نصي معين.

    javascript
    let str = "hello"; console.log(str.includes("ell")); // true
  • indexOf(): يُرجع موقع الحرف أو الجزء النصي داخل السلسلة.

    javascript
    let str = "hello"; console.log(str.indexOf("l")); // 2
  • slice(): يقوم باستخراج جزء من السلسلة النصية.

    javascript
    let str = "hello world"; console.log(str.slice(0, 5)); // "hello"

3. التوابع الخاصة بالقيم المنطقية (Boolean)

القيم المنطقية (Boolean) تعتبر من أبسط الأنواع الأولية، لكن جافاسكربت تدعمها ببعض التوابع التي تساعد على التحقق من القيم المنطقية:

  • toString(): يحول القيمة المنطقية إلى سلسلة نصية.

    javascript
    let bool = true; console.log(bool.toString()); // "true"
  • valueOf(): يعيد القيمة الأصلية للقيمة المنطقية.

    javascript
    let bool = new Boolean(false); console.log(bool.valueOf()); // false

4. التوابع الخاصة بـ null و undefined

القيم null و undefined تُعتبر قيم ثابتة ولا تدعم أي توابع محددة مثل الأنواع الأخرى. ومع ذلك، يمكن استخدامهما في التحقق من وجود أو غياب قيمة داخل التطبيقات:

  • null: يُستخدم للإشارة إلى أن الكائن لا يحتوي على قيمة.

    javascript
    let value = null; console.log(value); // null
  • undefined: يُستخدم للإشارة إلى أن المتغير لم يتم تعيين قيمة له.

    javascript
    let value; console.log(value); // undefined

5. التوابع الخاصة بـ Symbol

رمز (Symbol) هو نوع بديل يُستخدم لتحديد معرّفات فريدة في جافاسكربت، لا يدعم الكثير من التوابع أو الوظائف، إلا أنه يعد ذا أهمية خاصة في استخدامات معينة مثل الكائنات.

  • toString(): يُحول الرمز إلى سلسلة نصية.

    javascript
    let sym = Symbol('description'); console.log(sym.toString()); // "Symbol(description)"

كيف يختلف التعامل مع الأنواع الأولية عن الكائنات؟

من المهم أن نفهم أن الأنواع الأولية في جافاسكربت تتعامل بشكل مختلف عن الكائنات والمصفوفات. فالأنواع الأولية تكون قيمة، بينما الكائنات تُمرر بالمرجع.

عندما نقوم بتطبيق تابع على نوع أولي مثل الرقم أو السلسلة النصية، يتم إنشاء كائن مؤقت خلف الكواليس، وعندما ينتهي استخدامه، يتم تدميره تلقائيًا. على النقيض، الكائنات تُمرر بالمرجع، مما يعني أن أي تعديل على الكائن يؤدي إلى تغييره في جميع الأماكن التي يتم استخدامها فيها.

على سبيل المثال:

javascript
let num1 = 10; let num2 = num1; num2 = 20; console.log(num1); // 10 console.log(num2); // 20

هنا، عند تغيير قيمة num2 إلى 20، لم تتأثر num1 لأن num1 هو نوع أولي تم نسخه، وليس مرجعًا.

في المقابل، إذا كان لدينا كائن، فإن التعديل على الكائن سيؤثر على جميع الأماكن التي يتم فيها استخدامه:

javascript
let obj1 = { name: 'John' }; let obj2 = obj1; obj2.name = 'Jane'; console.log(obj1.name); // "Jane" console.log(obj2.name); // "Jane"

الخلاصة

توابع الأنواع الأولية في جافاسكربت تعد من المفاهيم الأساسية التي يجب على أي مطور أن يكون على دراية بها، لأنها تلعب دورًا كبيرًا في العمليات اليومية للبرمجة. من خلال هذه التوابع، يمكن التعامل مع الأرقام، النصوص، القيم المنطقية، الرموز، وحتى القيم الفارغة (null و undefined) بشكل فعال وميسر. بما أن الأنواع الأولية في جافاسكربت تتمتع بخصائص معينة وتجعل الكود أكثر كفاءة وسهولة في الصيانة، فإن فهم هذه التوابع واستخدامها بشكل صحيح يعد خطوة أساسية نحو الكتابة الجيدة للكود.