آموزش ویژگی های ECMAScript 6 (جلسه 16) : آموزش جزئیات کلاسها - قسمت 1



visibility  
mode_comment   ۲

همونطور که اطلاع دارید در جلسه گذشته مقدماتی در مورد کلاسها در ES6 قرار دادیم و شما رو با اونا آشنا کردیم. در این جلسه میخوایم اطلاعات بیشتری در مورد Class ها بهتون بدیم تا بیشتر اونا رو بشناسید. همونطور که در جلسه قبل هم ذکر شد، کلاسها نوع خاصی از توابع هستند و تقریبا شبیه به اونا عمل میکنند.

در مبحث توابع میدونین که دو نوع function expression و function declaration وجود داره که نحوه تعریف اونا با هم تفاوت داره. در مورد کلاسها نیز این موضوع صادق است و میتونین کلاسها رو به دو روش class expression و class declaration تعریف کنید. کدهایی که در جلسه قبل نوشتیم رو یکبار دیگه در اینجا قرار میدیم:

همونطور که در کد بالا میبینید، در ابتدا از کلمه کلیدی class استفاده کردیم و بعد از اون نام کلاس رو قرار دادیم. به این نوع تعریف کلاسها، class declaration میگن. برای اینکه کلاس رو بصورت class expression بنویسیم، بصورت زیر عمل میکنیم:

میبینید که کلاس رو مجددا تعریف کردیم ولی اینبار هیچ نامی رو بعد از اون قرار ندادیم و در عوض کل کلاس رو به یک متغیر نسبت دادیم. اگر خروجی رو مشاهده کنیم میبینیم که هیچ تفاوتی نکرده است و نتایج یکسان هستند. پس میتونیم از این روش بعنوان یک روش دیگر برای تعریف کلاس استفاده کنیم. همونطور که میدونین در توابع function declaration، تابع به بالای دامنه یا Scope انتقال داده یا Hoist میشه و در نتیجه میتونیم قبل از تعریف شدن تابع نیز از اون استفاده کنیم و با اینکار خطایی به وجود نمیاد. اما در مورد کلاسها این مورد صادق نیست و در دو نوع class declaration و class expression نمیتونین قبل از تعریف کلاسها، ازشون استفاده کنید. پس شما هر کدام از روشهای تعریف کلاس رو که دوس داشته باشید میتونین انتخاب کنید و مورد استفاده قرار بدین.

شما همچنین میتونین در حالت class expression یک نام رو بعد از class قرار بدین و باید این نکته رو در نظر داشته باشید که این نام فقط درون اون کلاس در دسترس است و خارج از کلاس به اون دسترسی ندارید. کد بالا رو بصورت زیر تغییر میدم:

میبینید که Person2 رو بعد از class قرار دادم. اگر نوع Person2 رو درون تابع بررسی کنیم (همانند خط 4)، خروجی function خواهد بود. اما اگر خارج از کلاس نوع Person2 رو بررسی کنیم (همانند خط 14)، خروجی undefined خواهد بود. چون که Person2 فقط در خود کلاس تعریف شده و خارج از اون تعریف نشده است.

توابع در Javascript، بصورت first class citizen یا first class function هستند و به این معنا هست که میشه توابع رو برای موارد زیر مورد استفاده قرار داد:

  • میتونیم تابع رو بصورت آرگومان به یک تابع دیگر پاس بدیم
  • میتونیم یک تابع رو درون تابع دیگر برگشت یا return بدیم
  • میتونیم یک تابع رو به یک متغیر نسبت بدیم
  • و ...
more  بیشتر بخوانید : ترفندهای پیشرفته jQuery (قسمت 44)

کلاسها نیز همانند توابع first class citizen هستند و میتونین از اونا به روشهای مختلف استفاده کنید. مثلا کد زیر رو در نظر بگیرید:

همونطور که دیدید در خط 1 یک تابع بنام createObject ساختیم و وظیفه اون گرفتن یک کلاس و ساختن یک نمونه جدید از اون است. میبینید که یک نمونه جدید از کلاس وارد شده رو میسازیم و return میکنیم. در خط 5 این تابع را فراخوانی میکنیم و یک کلاس بی نام یا Anonymous class رو به اون پاس میدیم که دارای یک متد بنام sayHi نیز است. با اینکار یک نمونه جدید از این کلاس ساخته میشه و به متغیر obj نسبت داده میشه. زمانی که در خط 11 متد sayHi از شئ obj رو فراخوانی میکنیم، متن Hi در Console چاپ میشه.

در جلسه بعد با ادامه موضوع در خدمتتون هستیم.

موفق و پیروز باشید.

یا علی

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back
comment دیدگاه کاربران
amin taghipour

سلام
این آموزش ها چند جلسه است؟

محمد اسفندیاری

سلام
دقیق مشخص نیست….در هر جلسه به موضوعی خاص میپردازیم و به اندازه ای میگیم که کاربران خسته نشن….
موفق باشید

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.