Have an account? Sign in
Login  Register  Facebook
This Page is Under Construction! - If You Want To Help Please Send your CV - Advanced Web Core (BETA)
[Edit] Date
الآن سنتعرف على كائن آخر من كائنات الجافا سكريبت و هو أيضا يمثل النوع الآخر من الكائنات ,حيث أن الكائنات في الجافا سكريبت تنقسم إلى نوعين :
  • ثابته (إستاتيكيه) مثل Math.
  • تفاعليه (ديناميكية) مثل Date .
و الفرق بينهم:
  • الإستاتيكي مثل Math قيم المتغيرات الموجوده داخله (الخصائص) ثابته مثل PI في Math فقيمة Math.PI ثابته دائما.
  • الديناميكي مثل Date قيم المتغيرات الموجوده داخله تتغير و سنفهم كيف يتم ذلك من خلال هذا الدرس .
عندما كنا نستخدم خاصية أو دالة من دوال الكائن الإستاتيكي Math كنا نستدعيها مباشرة بهذه الطريقة : في حالة الخاصية مثل PI: يكون هكذا Math.PI في حالة الدالة مثل ceil : يكون هكذا Math.ceil() أما في حالة الكائنات الديناميكية مثل Date فلابد أن ننشيء instance أي "مثيل" و يتم ذلك بهذه الطريقة:
var dateInstance = new Date()
و هذا المثيل dateInstance هو عبارة عن كائن إستاتيكي . و هناك شيء تقني مهم : إذا إستخدمنا الأداة typeof و التي ترجع لنا النوع البينات مع الكائن الإستاتيكي Math و الكائن Date سنجد أنه يرجع لنا نتيجتين مختلفتين .
في حالة Math:
typeof Math يرجع لنا "object" .
في حالة Date:
typeof Date يرجع لنا "function" .
أي أن الكائن الديناميكي ليس بالضبط كائن "object" لكنه دالة function من نوع خاص و سنلمس ذلك عمليا عندما نتعلم إنشاء الكائنات في الدروس التالية ,و الكائن الديناميكي مشابه للـ class في اللغات مثل php الاصدار الخامس و جافا وسي شارب و غيرها ,و إن لم تكن قد تعاملت مع أيا من اللغات الموجهة للكائنات من قبل فلا تشغل بالك بمصطلح الـ class فهو عامة شيء مشابه للكائن الديناميكي . ولاحظ أيضا أنه إذا إختبرنا نوع المثيل الذي ننشئه من الكائن الديناميكي سنجده "object" أي أن:
var dateInstance = new Date()
typeof dateInstance ترجع لنا "object" 
و من هنا ينشأ الفرق الذي تحدثنا عنه في البداية حيث أنه كل مثيل (كائن إستاتيكي ) ننشئه من الكائن الإستاتيكي مثل Date قد يحتوى على قيم مختلفة للمتغيرات ,وهذا ما سنوضحه بالمثال التالي .
Date
<html>

<script language="JavaScript">
var now = new Date()
  
document.write(now)           
</script>

</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

كما ترى في المثال في السطر الأول أنشأنا كائن إستاتيكي now ثم قمنا بطباعة هذا الكائن في السطر التالي و ستجد أنه الوقت الذي تم إنشاء الكائن فيه و لذا في كل مرة ستعيد تحديث الصفحة ستجد النتيجة تتغير للوقت الذي قمت عنده بالتحديث. و هذا يوضح كيف أن البيانات داخله تتغير و لكن يبقى الهيكل العالم ثابت فكل كىئن ستنشئه من الأوبجكت الديناميكي سيكون له نفس الخصائص Properties و نفس الدوال methods .و لندرس الآن بعض الدوال الخاصة به. هناك نوعين من الدوال ستقابلهم بإستمرار في البرمجة الموجهة بالكائنات و هما دوال الـ getter و دوال الـ setter الأولى تأتي لك ببيانات من داخل الكائن و الثانية تغير قيم البيانات الموجوده في الكائن و لنستعرض بعض الدوال الخاصة بالكائن Date: أولا: دوال الـ getter و هي تبدأ دائما ب get مثل: getMonth():ترجع الشهر الموجود في الكائن الذي أنشأناه كما بالمثال و يرجعه على شكل رقم هو ترتيب الشهر
getMonth()
<html>
<script language="JavaScript">
var now = new Date()
var month = now.getMonth()
var ar = new Array(12)
ar[0] = "January"
ar[1] = "February"
ar[2] = "March"
ar[3] = "April"
ar[4] = "May"
ar[5] = "June"
ar[6] = "July"
ar[7] = "August"
ar[8] = "September"
ar[9] = "October"
ar[10] = "November"
ar[11] = "December"
  
var message = "It is now " + ar[month] + ", my favorite.<BR>"
document.write(message)
  
</script>
</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و بالمثل :

getYear(): يرجع السنه بالأرقام ,في بعض المتصفحات يرجع ثلاث أرقام فقط مثلا يرجع 2011 هكذا 111 تجاهل الأخير من اليسار فيصبح لديك رقم السنه بعد الألفين .

getDate():يرجع في أي يوم من الشهر نحن مثلا إن كان اليو 11 في الشهر يرجع 11.

getDay():ترجع ترتيب اليوم بحيث أن يبدأ العد من أن يوم الأحد صفر.

getHours():ترجع عدد الساعات من بعد منتصف الليل.

و ستنكتفي بتلك الدوال من هذا علما بأنه يوجد غيرها لكن قلنا أن هدف الدروس أن تفهم الطريقة و ليس أن تحفظ وظائف الدوال .

أما بالنسبة لدوال الـ setter و التي تبدأ دائما ب set فهناك

setYear():و هذه الدالة تغير قيمة السنة داخل الكائن الذي قمت بإنشائه إلى القيمة التي تعطيها لها أي تضعها بين قوسي الدالة و لنفهمها من خلال هذا المثال الذي يعطيك أي يوم من أيام الأسبوع يقابل تاريخ اليوم الحاضر في السنة الماضية .

setYear()
<html>

<script language="JavaScript">
var now = new Date()
var year = now.getYear()
now.setYear(year - 1)
ar = new Array(7)
ar[0] = "Sunday"
ar[1] = "Monday"
ar[2] = "Tuesday"
ar[3] = "Wednesday"
ar[4] = "Thursday"
ar[5] = "Friday"
ar[6] = "Saturday"
document.write("Last year, the current day was " + ar[now.getDay()])
   
</script>

</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و كما ترى في هذا الجزء:
var now = new Date()
var year = now.getYear()
now.setYear(year - 1)
في السطر الأول أنشأنا الكائن , ثم في الثاني حصلنا على تاريخ العام الحالي بالدالة getYear() أما في الثالث now.setYear(year - 1) فقد وضعنا المتغير الذي به العام الحالي و طرحنا منه واحد فيما بين قوسي الدالة setYear() و بهذا تم تغيير السنه داخل الكائن now إلى السنه الماضية ولذا عندنا سنطلب اليوم بالأسفل now.getDay() سيعطينا رقم اليوم المماثل في السنه الماضية و من المصفوفات بالأعلى يتم تسميته على حسب ترتيبه. و هناك أيضا دوال مشابهة مثل: setMonth():تغير الشهر في الكائن إلى الشهر الذي تعطيه لها .

setDate():تغير تاريخ اليوم أي ترتيبه في الشهر إلى القيمة التي تعطيها لها و يوجد أيضا عدد آخر من الدوال تقوم بوظائف مشابهة كتغير الساعه و اليوم و هكذا و كلها تعمل بنفس الفكرة .

من الأمثلة السابقة يجب أن نكون أدركنا كيف أنه الكائن الإستاتيكي الذي تنشئه من الكائن الديناميكي Date تتشكل البيانات فيه حسب وقت إنشاءه فيحتوى المعلومات التفصيلية للوقت الذي أنشئ فيه ,و بالإضافة لذلك يمكنك أيضا تتحكم في قيم البيانات الموجوده في الكائن عند إنشاءه و يتم ذلك بهذا الشكل: إن أردنا أن ننشئ كائن من Date فيه المعلومات التفصيلية لتاريخ نحن نريده و ليس تاريخ إنشاءه و ليكن مثلا "Sat Dec 25 2006" أي السبت الخامس و العشرين من ديسمبر عام 2006 الساعه التاسعه ونصف صباحا بالضبط فإنه يتم هكذا
var Xmas2006 = new Date(106,11,25,9,30,0)
لاحظ ترتيب البرامترز فيما بين الأقواس يكون كالتالي: year, month, day, hour, minute, seconds و كذلك كما تعاملنا مع الكائن الديناميكي Date يكون الأمر مع الكائنات الديناميكية عامة بنفس الفكر.و الآن لننتقل إلى كيفية إنشاء الكائنات.
November 11, 2011