جاوا اسکریپت و شیئ گرایی

۹ شهریور ۱۳۸۸ هادی بدون دیدگاه

بسیاری از ما تا به حال از جاوا سکریپت برای انجام کارهای کوچکی در صفحات وب در سمت کلاینت استفاده کرده ایم. کارهایی از قبیل بررسی درستی اطلاعات وارد شده توسط کاربر قبل از ارسال برای سرور. ولی آیا کاربرد جاوا اسکریپت محدود به همین کارهای کوچک است؟
امروزه دیگر هر کس که با وب سر و کار دارد با سایت هایی مانند جی میل، یاهو میل یا فیس بوک برخورد کرده است. کاربران هنگام کار با این سایت ها احساس راحتی بیشتری نسبت به سایتها و نرم افزارهای معمول تحت وب می کنند. دلیل این موضوع وابستگی کمتر این سایتها به سرور و postback های کمتر در هنگام کار است. در حقیقت بخش زیادی از کد این سایتها در سمت کلاینت اجرا می شود. تولید و مدیریت این حجم زیاد عملکرد و کد که بالغ بر هزاران خط جاوا اسکریپت می شود کار ساده ای نیست. اینجاست که باز باید دست به دامان مزایای شیئ گرایی شد.

اشیا (objects) در جاوا اسکریپت

ساختن اشیا در جاوا اسکریپت بسیار ساده است. مثلاً کد زیر:

var karmand = {
name : 'Ali',
age : 25 };

یک object به نام karmand با دو property به نامهای name و age ایجاد می کند. دسترسی به این property ها مانند خیلی از زبانهای object-oriented دیگر با عملگر . (dot( است. مثلاً برای نمایش مقدار name از کد زیر استفاده کنید:

alert(karmand.name);

شما می توانید برای object هایتان method هایی هم تعریف کنید. تعریف کردن method ها کاملاً مشابه دیگر property هاست با این تفاوت که از جنس function هستند. مثلاً method را به این شکل تعریف می کنیم:

var karmand = {
name : 'Ali',
age : 30,
ShowName : function() {
alert(this.name);}
 };

و به این شکل فرا خوانی می کنیم:

karmand.ShowName();

تابع سازنده (Constructor)

همان طور که مشاهده کردید ما تا اینجا یک object را به طور مستقیم تعریف کردیم. در حالی که به طور معمول در زبانهای شیئ گرا ابتدا یک Class تعریف می شود و سپس Object ها به صورت نمونه هایی (Instance) از آن کلاس ساخته می شوند. در جاوا اسکریپت چنین ساختاری وجود ندارد! بله درست دیدید، جاوا اسکریپت چیزی به اسم class ندارد. البته نا امید نشوید، هنوز راه های دیگری وجود دارد.
در عوض یک تابع می تواند سازنده یک object باشد. برای مثال کد زیر ابتدا تابعی تعریف می کند که سازنده object هاست و با استفاده از آن دو شیئ به نامهای karmand1 و karmand2 می سازد که property های مشترکی دارند، ولی مقدار property هایشان با هم فرق می کند:

function Karmand(kName, kAge) {
this.name = kName;
this.age = kAge;
}
 
var karmand1 = new Karmand('Ali', 30);
var karmand2 = new Karmand('Maryam', 24);
دسته هاوب برچسب ها:, ,