هر سال با ارائه استانداردهای جدید اکماسکریپت، ویژگی های جدیدی هم به جاواسکریپت اضافه میشه. با انتشار ویژگی های جدید اکماسکریپت (در تابستان ۲۰۱۹) تصمیم گرفتم این مقاله رو بنویسم. ویژگی های نسخه جدید اکماسکریپت در نود ، و همچنین مرورگرهای کروم، فایرفاکس و سافاری قابل دسترس هستند و برای استفاده از این ویژگی ها تو نسخه های قدیمی تر میتونیم از Babel استفاده کنیم.
خوب بریم ببینیم ویژگی های جدید اکماسکریپت ۲۰۱۹ چی هست. برای درک بهتر هر بخش، یک مثال ساده هم ارائه شده. این مقاله قسمت دوم هم داره و تو هر قسمت ۳ تا از ویژگی های جدید رو معرفی میکنم.
قسمت دوم این مقاله:
سایر ویژگی های که توی این دو مقاله نیاوردم رو میتونید مطالعه کنید:
Symbol description ، Sort stability ، ECMAScript as JSON superset ، JSON.stringify
با معرفی ES2017 ویژگی Object.entries معرفی شد. این ویژگی در واقع یک تابع هست که آبجکت رو به لیست تبدیل میکنه. به مثال زیر دقت کنید. آبجکت سن دانش آموزان رو در نظر بگیرید:
خوب این ویژگی کاربردی به ما اجازه میده تا بر روی آبجکت از ویژگی های یک لیست استفاده کنیم. مثلا از توابع مرتبه بالا map & reducer & filter استفاده کنیم.
فرض کنید میخواهیم دانشجوهایی که بزرگتر از ۲۱ سال هستند رو فیلتر کنیم. چون داده هامون رو به لیست تبدیل کردیم، با یک فیلتر ساده این کار رو انجام میدیم:
حالا اگه بخواهیم نتیجه رو دوباره به صورت آبجکت داشته باشیم باید یک حلقه for بنویسیم:
اینجاست که ویژگی جدید جاواسکریپت به ما اجازه میده به راحتی این کار رو انجام بدیم و مارو از نوشتن حلقه بی نیاز میکنه:
خیلی ساده بود، نه ؟
نکته مهم دقت کنید که لیست و آبجکت ، ساختار داده ای جدا دارند. له لیست زیر دقت کنید که دوتا کلید با اسم تکراری داریم. وقتی این لیست به آبجکت تبدیل میشه ، این مقدار تکراری حذف میشه ( همونطور که میدونید، آبجکت نمیتونه دوتا کلید یکسان داشته باشه)
وضعیت پشتیبانی از این ویژگی جدید:
زمانی که با داده ها کار میکنیم، ساختار های چند بعدی و تو در تو زیادی رو میبینیم. تبدیل داده های تو در تو به شکل یک داده غیر تو در تو رو flat کردن میگیم. در مورد مزایای مسطح کردن داده ها تو این مقاله صحبتی نمیکنم اما بدونید که خیلی از جاها به این کار نیاز داریم. برای فلت کردن داده ها همیشه راههای مختلفی وجود داشته.
مثال زیر رو در نظر بگیرید. ابتدا با یک map به داده های دانش آموزان میرسیم.
خروجی، یک لیست چند بعدی است. برای این که این لیست رو مسطح کنیم باید از حلقه و ... استفاده کنیم اما به لطف ویژگی جدید جاواسکریپت، با یک متد میتونیم این کارو به راحتی انجام بدیم:
ویژگی جدید flat به ما این اجازه رو میده که با قرار دادن یک عدد، عمق این مسطح سازی رو هم تعیین کنیم. از این بهتر چی میخواستیم ؟ بدون نیاز به حلقه های تو در تو تونستیم داده هامون رو مسطح و یک بعدی کنیم. اونم با یک خط کد !
نکته مهم: مقدار آرگومان پیش فرض این متد، ۱ هست و در صورتی که مقداری براش قرار ندیم با عمق ۱ شروع به مسطح سازی داده ها می کنه!
خوب ممکنه این سوال پیش بیاد که اگه ندونیم ساختار داده ای چند بعدی هست ( بعضی مواقع ممکنه پیش بیاد) و بخواهیم از این متد استفاده کنیم چاره چیه؟
به سادگی و با قرار دادن یک Infinity در آرگومان این متد، اجازه میدیم که تا حداکثر عمق ممکن عملیات مسطح سازی داده هارو انجام بده.
وضعیت پشتیبانی از این ویژگی جدید:
یکی دیگه از ویژگی های خیلی خوب استاندارد ES2019 همین استفاده دلخواه از آرگومان خطا در بدنه try-catch هست. قبلا هر بلاک catch که مینوشتیم باید یک آرگومان خطا هم بهش پاس میدادیم. خیلی وقت ها این آرگومان اصلا توی بدنه catch استفاده نمیشد، اما قرار دادنش اجباری بود. ویژگی جدید به ما این اجازه رو میده تا در صورتی که نخواستیم، از این آرگومان استفاده نکنیم. بلاک اول رو با بلاک دوم مقایسه کنید:
وضعیت پشتیبانی از این ویژگی جدید :
برای طولانی نشدن این مقاله، ۳ ویژگی باقی مونده رو تو قسمت دوم دنبال کنید.
سایر مقاله های من در ویرگول:
Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123