القيمة الأولية والكائن
لابد وأن تكون قد أخذت الآن عن الفارق بين القيم الأولية، مثل القيم العددية والقيم اللفظية، والقيم المنطقية، وبين الكائن، مثل كائن التاريخ، وكائن المصفوفة، ويجب أن تعلم أن هناك أيضاً كائن نصي String Object، فما هو هذا الكائن، وما هي استخداماته، هذا ما سنعرفه حالاً.
ليس هناك كائن نصي فقط، بل هناك أيضاً كائن نصي، وكائن عددي صحيح Number Object، وكائن منطقي Boolean Object.
فعلى سبيل المثال لإنشاء كائن نصي يستخدم كود كالتالي:
var myString = newString(“I’m aString object”);
والكائن النصي له خاصية الطول Length تماماً كما في حالة كائن المصفوفة، وقيمة خاصية الطول في الكائن النصي عبارة عن عدد الأحرف التي يتكون منها النص، والكود التالي يقوم بوضع عدد الأحرف التي يتكون منها الكائن myString كقيمة للمتغير length Of String.
var length Of String = myString.length;
أنظر في الكود السابق كيف تم الوصول إلى قيمة خاصية length الخاصة بالكائن باستخدام النقطة بين أسم الكائن وأسم الخاصية.
كما يمكنك أيضاً معرفة عدد الأحرف التي تتكون منها قيمة متغير نصي عادي، ففي الكود التالي تم تعريف المتغير النصي mySecondString، وتم إعطاؤها قيمة عبارة عن نص يتكون من عدد الأحرف.
var mySecondString = “I’m a primitive string”;
في هذه الحالة ولمعرفة عدد الأحرف التي يتكون منها المتغير الموجود في الكود السابق يستخدم كود التالي لوضع عدد الأحرف التي يتكون منها هذا المتغير كقيمة لمتغير آخر، كما يلي:
var length Of SecondString = mySecondString.length;
ففي الكود السابق تم استخدام المتغير length Of SecondSTring لمعرفة عدد الأحرف التي تحتوي عليها قيمة المتغيرmySecondString.length، وذلك باستخراج قيمة الخاصية length الخاصة بالمتغير، ويوضع النقطة بين أسم المتغير وأسم الخاصية.
وربما يقول قائل هل المتغيرات الأولية أيضاً لها خواص مثل الكائن؟ هل المتغير mySecondString له خاصية تسمي length تعبر عن طول قيمة النص المعطي كقية للمتغير؟ شأنه في ذلك شأن الكائن تماماً؟ هل ما ينطبق على الكائن ينطبق أيضاً على المتغيرات الأولية؟
والإجابة على كل الأسئلة السابقة كلها بالنفي، فليس المتغير mySecondString له خاصية تسمى length تعبر عن طول النص المعطي كقيمة للمتغير، وليس شأن المتغير ي ذلك شأن الكائن تماماً، وليس ما ينطبق على الكائن ينطبق على المتغير، ولكن ما حدث هو أن جافا سكريبت قامت بتحويل المتغير الأولى وبشكل تلقائي إلى كائن عند طلب قيمة الخاصية length وهذه الخواص لا تعطي إلا للكائنات، وعلى ذلك فهمت جافا سكريبت أنك تريد تحويل هذا المتغير إلى كائن، فقامت بتحويل المتغير لكائن، وقامت باستخراج عدد الأحرف التي تتكون منها القيمة المعطاة للكائن، هذا كل ما حدث.