استخدام الكائن في جافا سكريبت:
نرى سابقا أن المصفوفة تعتبر كائن، لإنشاء كائن مصفوفة يستخدم الكود التالي:
؛()Var myArray = new Array
والكود السابق سبق وأن رأيناه قبل ذلك، فالجزء الأول من الكود يقوم بتعريف المتغير myArray باستخدام الكلمة المفتاحية var، والجزء الثاني من الكود بتكون من جرين، الجزء الأول هو المعامل new والذي يخبر جافا سكريبت بأنك عوم بإنشاء كائن جديد، والجزء الثاني من الكود وهو كلمة ( )Array تخبر جافا سكريبت بأن الكائن الجديد الذي تقوم بإنشائه هو كائن مصفوفة، ويمكنك استخدام الكلمة ()Date بدلًا من كلمة ()Away لإنشاء كائن تاريخ، والاستثناء الوحيد من هذه القاعدة كما سنرى فيما بعد هو الكائن الحسابي Math Object .
وعرفنا أيضًا بأنه يمكن وضع قيم عناصر المصفوفة بين قوسي المصفوفة، كما في الكود التالي:
؛(”var myArray = new Away(“mohamed”, “ahmed”, “sami
والكود التالي يعتبر أبسط طريقة لإنشاء كائن.
var myDate = new Date();
والكود السابق يقوم بإنشاء كائن تاريخ يسمي myDate، أما الكود التالي فيقوم بإنشاء كائن تاريخ وعطاء قيمة له.
var myDate = new Date(‘‘l Jan 2010″);
وكما في الكود التالي يتم إنشاء كائن المصفوفة، ووضع القيم بداخله واستخدامه.
var myAnayRef = new Array(0, 1, 2);
var mySecondArrayRef = myArrayRef;
myArrayRe]O] = 100;
alert(mySecondArrayRe]0]);
ففي السطر الأول من الكود السابق قمنا بإنشاء كائن المصفوفة myArrayRef، وقمنا بإعطاء القيم لعناصر هذه المصفوفة، وفي السطر الثاني من الكود قمنا بإنشاء كائن مصفوفة ثاني هو mySecondArrayRef، ولكن بطريقة أخرى، وذلك بجعل أن هذا المتغير يساوي قيمة كائن المصفوفة، فأصبح بالتالي هو الآخر كبائن مصفوفة، وفي الثالث قمنا بتحديد قيمة العنصر الذي رتبته 0 في المصفوفة myArrayRef وأعطينا له القيمة 100 بدلًا من القيمة صفر المحددة في الكود الأول، أما في السطر الرابع فطلبنا من المتصفح إظهار رسالة تحذير تحمل قيمة العنصر الذي رتبته 0 من عناصر كائن المصفوفة mySecondArrayRef، فما هي القيمة التي تحملها رسالة التحذير التي ستظهر؟ هل ستظهر القيمة القديمة 0، أم ستظهر القيمة الجديدة 100؟.
القيمة التي ستحملها الرسالة هي القيمة 100 وليس القيمة 0، فقد تستغرب الإجابة لأنك عندما قمتا بتغيير قيمة العنصر في المصفوفة لم تقم بتغيير قيمة العنصر الأول في المصفوفة mySecondArrayRef، وإنما قمت بتغييره في المصفوفة الأصلية myArrayRef، فكيف تغير العنصر الأول في المصفوفة mySecondArrayRef بالتبعية؟ بالرغم من أن كود التغيير جاء بعد الكود الخاص بجعل المتغير mySecond ArrayRef يساوي قيمة المصفوفة myArrayRef السبب في ذلك هو أن السطر الثاني من الكود لا يجعل قيمة المتغير mySecondArrayRef تساوي قيمة المصفوفة myArrayref، وإنما جعلها نسخة منها، أو مثال لها، أو وسيلة لاستدعائها، أو بمعنى آخر مرجع لها Reference، وبالتالي فإن أي تغيير في قيمة المصفوفة الأصلية ينطبق أيضًا على قيمة المصفوفة الجديدة، لأن المصفوفة الجديدة ما هي إلى صورة، أو مرجع للمصفوفة الأصلية .
وهذا كود آخر مشابه للكود السابق.
var my Varlable = “ABC”;
var mySecondVarlable = myVarlab!e;
myVarlable = “DEF”;
alert (mySecondVariable);
في السطر الأول من الكود قمنا بتعريف متغير وإعطاؤه قيمة نصية له، وفي السطر الثاني قمنا بتعريف متغير ثاني وأعطينا له قيمة تساوي قيمة المتغير الأول وفي السطر الثالث قمنا بتغيير قيمة المتغير الأصلي، وفي السطر الرابع طلبنا قيمة المتغير الثاني، فأي القيمتين سنحصل عليها هل القيمة قبل التغيير، أم القيمة بعد التغيير؟
الوضع هنا مختلف، فالقيمة المعطاة للمتغير قيمة أولية وتغيير هذه القيمة سينصب فقط على المتغير الأصلي دون أن يتأثر المتغير الجديد بذلك والذي أخذ قيمة هذا المتغير؛ وذلك لأن التغيير في القيمة جاء بعد تحديد قيمة المتغير الجديد، وبالتالي نسخت القيمة الجديدة نسخت القيمة القديمة، وما يظهر عند طلب قيمة المتغير تظهر القيمة الجديدة وليست القيمة القديمة.
وفي نهاية هذا الجزء من الفصل نتذكر أهم ما جاء به، وهو أن الصيغة العامة لإنشاء الكائن في جافا سكريبت هي كما يلي:
Var myVariable= new ObjectName (optional parameters);