توابع الأنواع الأولية (Primitive Methods) في جافاسكربت
تعتبر جافاسكربت واحدة من أبرز لغات البرمجة المستخدمة في تطوير الويب، وتمتاز بمرونتها وسهولة تعلمها. تعد الأنواع الأولية (primitives) في جافاسكربت من أهم المفاهيم التي يجب على المبرمجين فهمها بشكل دقيق لأنها تشكل الأساس لمعظم العمليات في اللغة. الأنواع الأولية تتضمن سلاسل النصوص، الأرقام، القيم المنطقية، null, undefined, و symbol، وكل منها يمتلك خصائص وطرق خاصة به. سنتناول في هذا المقال توابع الأنواع الأولية في جافاسكربت، وشرح كيفية استخدامها، وكيف تختلف عن الأنواع المركبة مثل الكائنات (objects) والمصفوفات (arrays).
ما هي الأنواع الأولية في جافاسكربت؟
الأنواع الأولية هي قيم ثابتة لا يمكن تغييرها بعد إنشائها. وهي تشمل:
-
الأرقام (Number): تمثل الأرقام الصحيحة والعشرية.
-
سلاسل النصوص (String): تمثل النصوص أو السلاسل الأحرف.
-
القيم المنطقية (Boolean): تمثل القيم
trueوfalse. -
null: تمثل القيمة “غير المحددة” أو “اللا شيء”.
-
undefined: تمثل القيمة التي يتم تعيينها لمتغير لم يتم تعيين قيمة له.
-
رموز (Symbol): تمثل قيمة فريدة غير قابلة للتكرار، تستخدم غالبًا لإنشاء معرّفات فريدة في الكائنات.
كيفية عمل التوابع مع الأنواع الأولية؟
عند العمل مع الأنواع الأولية في جافاسكربت، يظهر نوع من “السحر” الذي يُسمى التغليف التلقائي (Autoboxing). هذا يعني أن جافاسكربت تقوم بإنشاء كائنات مؤقتة تحتوي على وظائف (توابع) يمكن استخدامها مع الأنواع الأولية.
1. التوابع الخاصة بالأرقام (Number)
تُعتبر الأرقام أحد الأنواع الأولية الأكثر استخدامًا في جافاسكربت، ويمتلك النوع Number العديد من التوابع والخصائص التي تسهل التعامل مع الأرقام. إليك بعض التوابع والخصائص التي تدعمها جافاسكربت:
-
toString(): يقوم بتحويل الرقم إلى سلسلة نصية (String).
javascriptlet num = 123; console.log(num.toString()); // "123" -
toFixed(): يستخدم لتحديد عدد الأرقام العشرية في العدد العشري.
javascriptlet num = 3.14159; console.log(num.toFixed(2)); // "3.14" -
toPrecision(): يستخدم لتحديد دقة الرقم (عدد الأرقام الكلية).
javascriptlet num = 123.456; console.log(num.toPrecision(4)); // "123.5" -
valueOf(): يعيد القيمة الأصلية للعدد.
javascriptlet num = new Number(10); console.log(num.valueOf()); // 10
2. التوابع الخاصة بسلاسل النصوص (String)
سلاسل النصوص في جافاسكربت هي أيضًا من الأنواع الأولية، ومع ذلك، يمكن استخدام عدد من التوابع عليها. جافاسكربت توفر العديد من التوابع التي تسهل التعامل مع السلاسل النصية:
-
toUpperCase(): يحول جميع الأحرف إلى أحرف كبيرة.
javascriptlet str = "hello"; console.log(str.toUpperCase()); // "HELLO" -
toLowerCase(): يحول جميع الأحرف إلى أحرف صغيرة.
javascriptlet str = "HELLO"; console.log(str.toLowerCase()); // "hello" -
charAt(): يُرجع الحرف الموجود في الموقع المحدد.
javascriptlet str = "hello"; console.log(str.charAt(1)); // "e" -
includes(): يتحقق مما إذا كانت السلسلة تحتوي على جزء نصي معين.
javascriptlet str = "hello"; console.log(str.includes("ell")); // true -
indexOf(): يُرجع موقع الحرف أو الجزء النصي داخل السلسلة.
javascriptlet str = "hello"; console.log(str.indexOf("l")); // 2 -
slice(): يقوم باستخراج جزء من السلسلة النصية.
javascriptlet str = "hello world"; console.log(str.slice(0, 5)); // "hello"
3. التوابع الخاصة بالقيم المنطقية (Boolean)
القيم المنطقية (Boolean) تعتبر من أبسط الأنواع الأولية، لكن جافاسكربت تدعمها ببعض التوابع التي تساعد على التحقق من القيم المنطقية:
-
toString(): يحول القيمة المنطقية إلى سلسلة نصية.
javascriptlet bool = true; console.log(bool.toString()); // "true" -
valueOf(): يعيد القيمة الأصلية للقيمة المنطقية.
javascriptlet bool = new Boolean(false); console.log(bool.valueOf()); // false
4. التوابع الخاصة بـ null و undefined
القيم null و undefined تُعتبر قيم ثابتة ولا تدعم أي توابع محددة مثل الأنواع الأخرى. ومع ذلك، يمكن استخدامهما في التحقق من وجود أو غياب قيمة داخل التطبيقات:
-
null: يُستخدم للإشارة إلى أن الكائن لا يحتوي على قيمة.
javascriptlet value = null; console.log(value); // null -
undefined: يُستخدم للإشارة إلى أن المتغير لم يتم تعيين قيمة له.
javascriptlet value; console.log(value); // undefined
5. التوابع الخاصة بـ Symbol
رمز (Symbol) هو نوع بديل يُستخدم لتحديد معرّفات فريدة في جافاسكربت، لا يدعم الكثير من التوابع أو الوظائف، إلا أنه يعد ذا أهمية خاصة في استخدامات معينة مثل الكائنات.
-
toString(): يُحول الرمز إلى سلسلة نصية.
javascriptlet sym = Symbol('description'); console.log(sym.toString()); // "Symbol(description)"
كيف يختلف التعامل مع الأنواع الأولية عن الكائنات؟
من المهم أن نفهم أن الأنواع الأولية في جافاسكربت تتعامل بشكل مختلف عن الكائنات والمصفوفات. فالأنواع الأولية تكون قيمة، بينما الكائنات تُمرر بالمرجع.
عندما نقوم بتطبيق تابع على نوع أولي مثل الرقم أو السلسلة النصية، يتم إنشاء كائن مؤقت خلف الكواليس، وعندما ينتهي استخدامه، يتم تدميره تلقائيًا. على النقيض، الكائنات تُمرر بالمرجع، مما يعني أن أي تعديل على الكائن يؤدي إلى تغييره في جميع الأماكن التي يتم استخدامها فيها.
على سبيل المثال:
javascriptlet num1 = 10;
let num2 = num1;
num2 = 20;
console.log(num1); // 10
console.log(num2); // 20
هنا، عند تغيير قيمة num2 إلى 20، لم تتأثر num1 لأن num1 هو نوع أولي تم نسخه، وليس مرجعًا.
في المقابل، إذا كان لدينا كائن، فإن التعديل على الكائن سيؤثر على جميع الأماكن التي يتم فيها استخدامه:
javascriptlet obj1 = { name: 'John' };
let obj2 = obj1;
obj2.name = 'Jane';
console.log(obj1.name); // "Jane"
console.log(obj2.name); // "Jane"
الخلاصة
توابع الأنواع الأولية في جافاسكربت تعد من المفاهيم الأساسية التي يجب على أي مطور أن يكون على دراية بها، لأنها تلعب دورًا كبيرًا في العمليات اليومية للبرمجة. من خلال هذه التوابع، يمكن التعامل مع الأرقام، النصوص، القيم المنطقية، الرموز، وحتى القيم الفارغة (null و undefined) بشكل فعال وميسر. بما أن الأنواع الأولية في جافاسكربت تتمتع بخصائص معينة وتجعل الكود أكثر كفاءة وسهولة في الصيانة، فإن فهم هذه التوابع واستخدامها بشكل صحيح يعد خطوة أساسية نحو الكتابة الجيدة للكود.

