به نظر من خیلی خوبه همیشه در مورد کار هایی که انجام میدیم عمیقا فکر کنیم و بدونیم که پشت پرده چه اتفاقی میوفته .
سری مطالب “جاواسکریپت زیر ذره بین” مقالاتی هستند که در مورد نحوه کار کردن جاواسکریپت به زبان ساده صحبت میکنند و به ما در فهم عمیق تر اون کمک میکنند.
من قصد دارم در این مقاله در مورد Rest/Spread Operator ها براتون بنویسم .
جزییات کامل در مورد این Feature رو میتونید اینجا بخونید.
از Rest/Spread Operator به این شکل استفاده میشه:
در واقع ما داریم میگیم که دو پارامتر اولی که دریافت میکنی رو داخل name و family قرار بده
(رفتاری که همیشه یک تابع معمولی از خودش نشون میده)
اما به عنوان پارامتر سوم، داریم میگیم که بقیه پارامتر ها (هر تعداد که بودند) رو داخل یک متغیر به اسم otherArguments قرار بده .
اما کاربرد این Feature فقط به پارامتر های Function محدود نمیشه .
با هم چند تا مثال دیگه رو بررسی میکنیم :
در این مثال پارامتر(person) رو دریافت کردیم و به کمک Object Destructuring کلید های name و family رو از داخلش بیرون کشیدیم و بقیه property ها رو داخل یک object دیگه به اسم other قرار دادیم .
در واقع میتونستیم این کار رو به شکل زیر هم انجام بدیم (که البته این روش بهتری هم هست!)
قابلیت Rest/Spread Operator از ورژن ES2015 یا ES6 به جاوا اسکریپت اضافه شدند و خیلی غافلگیر کننده هم نیست که بفهمیم این قابلیت توی IEپشتیبانی نمیشه!
اما راه حل!
میتونیم به کمک Transpiler هایی مثل Babel کد ها رو به شکلی تبدیل کنیم تا مرورگر های قدیمی هم اونها رو بفهمن و اجرا کنن که در مورد نحوه راه اندازی اونها حتما بعدا مقاله ای مینویسم.
برای من جذاب بود که این تغییر چطور انجام میشه!
این کدی هست که ما مینویسیم :
برای اجرای چنین تابعی در مرورگر IE باید چندتا تابع دیگه تعریف بشه که به کمک اونها این کار انجام بشه (در واقع babel این کار رو انجام میده)
و babel شکل تابع ما رو به این شکل زیر تغییر میده:
و بعد برای انجام دادن عملیات Rest/Operator دو تابع دیگه هم تعریف میکنه. بدنه تابع objectWithoutProperties_ به این شکل هست:
به نظرم خوبه که همیشه از خودمون سوال بپرسیم و در مورد کار کردن همه چیز کنجکاو باشیم!
امیدوارم لذت برده باشید!
با نظراتتون خوشحالم کنید!