شی گرایی در جاوا اسکریپت ( قسمت چهارم)

در این قسمت میپردازیم به ادامه قسمت سوم و قصد داریم با استفاده از نمونه سازی رفتار اشیا را جهت کارایی بیشتر بین آنها به اشتراک بگذاریم.

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

Car.prototype;

کلید اشتراک گذاری توابع بین اشیا اینجاست: هر وقت یک تابع از یک شئ را در جاوا اسکریپت صدا میزنیم مفسر جاوااسکریپت سعی میکند این تابع را در شئ هدف پیدا کند، ولی اگر این تابع را درون این شئ نیافت از شئ درخواست میکند که پیش نمونه خودش را نشان دهد، سپس به پیش نمونه میرود و اگر آن تابع را یافت آن را اجرا میکند.

این به این معنیست که میتوانیم یک شی myCar بدون هیچ گونه تابعی داشته باشیم.


ادامه نوشته

شی گرایی در جاوا اسکریپت ( قسمت سوم)

در این قسمت روش تولید اشیاء با یک سازنده را یاد میگیریم.

در جاوا اسکریپت موجودیت هایی وجود دارند که اشیا را با رفتار های اشتراکی ایجاد مینمایند به این توابع خاص که جزیی موجودیت های جاوا اسکریپت میباشند سازنده (constructor) میگوییم.

حالا یک سازنده برای تولید ماشین میسازیم. حرف اول این سازنده را با شکل بزرگ C آن نمایش میدهیم که مشخص میکند یک سازنده میباشد.

 از انجا که قصد داریم دو شکل مختلف برای تولید اشیا با رفتارهای اشتراکی را مورد بحث قرار دهیم پس در دو قدم به جواب نهایی میرسیم.

قدم اول: استفاده از روش قبلی (که اشیا مستقل تولید میکرد) اما حالا با استفاده از یک سازنده.

function Car () {                                                                  this.honk = function () {                                                        console.log ("honk honk");                                          }                                                                       }

ادامه نوشته

شی گرایی در جاوا اسکریپت ( قسمت دوم)

در قسمت اول تفاوت شی گرایی در جاوااسکریپت با سایر زبان ها را مورد بحث قرار دادیم در این قسمت به روش ساخت اشیا در جاوا اسکریپت اشاره میکنیم. در شکل سادهaو بی دردسر میتوان یک پیش نمونه برای اشیا را به شکل زیر ایجاد نمود:


 var myCar = {}
     myCar.honk = function() {  
         console.log("honk honk");
    } 
     myCar.drive = function() {  
        console.log("vrooom..."); 
    }
ادامه نوشته

شی گرایی در جاوا اسکریپت ( قسمت اول)

زبان های برنامه نویسی شی گرا به دو صورت اشیا را میسازند.اگر myCar نمایش بیتی اتومبیل واقعی باشد پس دارای صفات رنگ و وزن بیتی و عمل های راندن و بوق زدن بیتی هم میباشد. در یک برنامه واقعی این اتومبیل را میتوان در یک بازی ماشین سواری که توسط یک بازی کن رانده میشود در نظر گرفت. حالا ما قصد داریم در باره استفاده این ماشین و رفتارش در برنامه صحبت کنیم.

اگر بخواهید از این شی ماشین در برنامه جاوا استفاده کنید باید قبل از آن یک طرح کلی را برایش تعریف کنید. این همان چیزی است که اکثر زبان های شی گرای مانند جاوا ان را کلاس مینامند.

اگر نیاز به یک شی ماشین داشته باشید به جاوا میگویید که یک نمونه با ویژگی های تعیین شده از طرح قبلی برایتان بسازد.

حالا این شی از تمام جنبه های کلاس استفاده میکند و از متدهایش به شکل زیر بهره میبرد.

myCar.honk();

مفسر جاوا با دیدن این دستور به کلاس ماشین رفته و تعیین میکند که باید چه دستوراتی را اجرا نماید.همان دستوراتی که در متد honk تعریف شده است.

حالا به جاوا اسکریپت میرویم.

جاوا اسکریپت چیزی به اسم کلاس ندارد ولی میتوانیم به مفسر آن بگوییم که اشیا را از روی یک طرح اولیه برای ما بسازد. این که بخواهیم برای هر شی صات و متدهای جدید تعریف کنیم آزار دهنده خواهد بود.

اگر در جاوا بخواهیم 30 تا شی ماشین بسازیم ، این رابطه کلاس-شی برای ما 30 ماشین با قابلیت راندن و بوق زدن که هر کدام 30 تا متد honk و drive را اجرا میکنند، فراهم میکند.

اما در جاوا اسکریپت چگونه به این هدف برسیم ؟ به جای رابطه کلاس-شی در جاوا اسکریپت رابطه شی-شی تعریف میشود.

 

منبع: iNote

ادامه نوشته