Nima Mohamadian
Nima Mohamadian
خواندن ۲ دقیقه·۵ سال پیش

ویژگی‌ های جدید اکماسکریپت ۲۰۱۹ - قسمت دوم

هر سال با ارائه استانداردهای جدید اکماسکریپت، ویژگی های جدیدی هم به جاواسکریپت اضافه می‌شه. با انتشار ویژگی های جدید اکماسکریپت (در تابستان ۲۰۱۹) تصمیم گرفتم این مقاله رو بنویسم. ویژگی های نسخه جدید اکماسکریپت در نود ، و همچنین مرورگرهای کروم، فایرفاکس و سافاری قابل دسترس هستند و برای استفاده از این ویژگی ها تو نسخه های قدیمی تر می‌تونیم از Babel استفاده کنیم.

خوب بریم ببینیم ویژگی های جدید اکماسکریپت ۲۰۱۹ چی هست. برای درک بهتر هر بخش، یک مثال ساده هم ارائه شده. قسمت اول این مقاله رو می‌تونید اینجا مطالعه کنید:

https://virgool.io/@novonimo/ویژگی-های-جدید-اکماسکریپت-۲%DB%B0۱۹-قسمت-اول-gs7mlxwoxu57



ویژگی‌ های جدید اکماسکریپت ۲۰۱۹
ویژگی‌ های جدید اکماسکریپت ۲۰۱۹


ویژگی Array.prototype.flatMap

تو قسمت قبل دیدیم که ویژگی مسطح سازی با استفاده از متد flat به سادگی انجام شد. حالا این مثال رو در نظر بگیرید. استاد تصمیم میگیره همه نمره هارو روی نمودار ببره و به هر کس ۷ نمره اضافه کنه و نمره قبلی و نمره جدید رو توی یک لیست داشته باشه.

اضافه کردن یک عدد به عناصر یک لیست و ساختن یک لیست دلخواه
اضافه کردن یک عدد به عناصر یک لیست و ساختن یک لیست دلخواه

به لطف ES2019 بجای استفاده از متد concat می‌تونیم از flat استفاده کنیم:

استفاده از flat و map بر روی یک لیست
استفاده از flat و map بر روی یک لیست


از اونجایی که استفاده همزمان از map و flat خیلی کاربرد داره،اکماسکریپت ۲۰۱۹ یک متد جدید به اسم flatMap ساخته تا کد بالا رو بازهم ساده تر کنه:

استفاده از ویژگی جدید flatMap در اکماسکریپت ۲۰۱۹
استفاده از ویژگی جدید flatMap در اکماسکریپت ۲۰۱۹

 

خوب اگه یادتون باشه، آرگومان پیش فرض flat مقدار ۱ بود. flatMap از ترکیب flat و map به وجود اومده که flat اون آرگومانی نداره، پس همیشه عمق مسطح سازی متد flatMap ، یک هست!

مثال زیر نشون می‌ده که با تغییر مدل map دیگه عمل مسطح سازی تا ۲ عمق انجام نمی‌شه:

عمق مسطح سازی متد flatMap همیشه برابر با ۱ هست
عمق مسطح سازی متد flatMap همیشه برابر با ۱ هست


وضعیت پشتیبانی از این ویژگی جدید:

 وضعیت پشتیبانی از ویژگی flatMap در محیط های مختلف
وضعیت پشتیبانی از ویژگی flatMap در محیط های مختلف

ویژگی‌ های جدید اکماسکریپت ۲۰۱۹
ویژگی‌ های جدید اکماسکریپت ۲۰۱۹

ویژگی String.trimStart and String.trimEnd

قبلا وقتی می‌خواستیم فاصله های اضافی رو از یک رشته پاک کنیم از متدهای String.trimRight و همچنین String.trimLeft استفاده می‌کردیم. درسته که مشکلی با عملکرد این متدها وجود نداره اما برای خیلی ها این اسامی بار معنایی مناسبی رو ارائه نمی‌کنه:

استفاده از متدهای trimLeft و trimRight
استفاده از متدهای trimLeft و trimRight


اکماسکریپت ۲۰۱۹ برای این توابع اسامی بهتر و ملموس تری رو ارائه کرده:

ویژگی جدید trimEnd و trimStart
ویژگی جدید trimEnd و trimStart

خط آخر استفاده همزمان از هردو متد برای حذف همه فواصل اضافی رو نشون میده.


وضعیت پشتیبانی از این ویژگی جدید:

وضعیت پشتیبانی از ویژگی های جدید trimStart و trimEnd
وضعیت پشتیبانی از ویژگی های جدید trimStart و trimEnd



ویژگی‌ های جدید اکماسکریپت ۲۰۱۹
ویژگی‌ های جدید اکماسکریپت ۲۰۱۹

ویژگی Function.toString

این ویژگی قبلا هم وجود داشته اما نحوه نمایش خروجی این متد توی اکماسکریپت ۲۰۱۹ تغییر کرده.
نحوه نمایش فعلی این متد رو می‌تونید ببینید:

ویژگی  Function.toString با نسخه های فعلی اکماسکریپت
ویژگی Function.toString با نسخه های فعلی اکماسکریپت


می‌بینید که همه خط های جدید و فواصل تب ، به کارکترهای n\ و t\ تبدیل شده و کل خروجی در یک خط نمایش داده شده. توی اکماسکریپت جدید این ویژگی تغییر کرده:

ویژگی Function.toString در اکماسکریپت ۲۰۱۹
ویژگی Function.toString در اکماسکریپت ۲۰۱۹


وضعیت پشتیبانی از این ویژگی جدید:

وضعیت پشتیبانی از  ویژگی جدید Function.toString
وضعیت پشتیبانی از ویژگی جدید Function.toString



سایر مقاله های من در ویرگول:

https://virgool.io/JavaScript8/آبجکت-بدون-اثر-جانبی-در-جاواسکریپت-wswtjtwpguuq
https://virgool.io/@novonimo/چرا-ریداکس-qlhmkcxf6dzv
https://virgool.io/iran-react-community/فانکشنال-کامپوننت-در-مقابل-کلاس-کامپوننت-b8bhzvut2zp1



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

برنامه نویسیجاواسکریپتjavascriptdeveloper
توسعه دهنده جاواسکریپت
انتشارات تخصصی زبان برنامه نویسی جاوااسکریپت و تکنولوژی‌های Front-end
شاید از این پست‌ها خوشتان بیاید