<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های mohammad khakhsoor</title><link>https://virgool.ir/feed/@mkhbeats</link><description></description><language>fa</language><pubDate>2026-11-11 09:05:28</pubDate><image><url>https://files.virgool.ir/upload/users/2013636/avatar/avatar.png</url><title>mohammad khakhsoor</title><link>https://virgool.ir/@mkhbeats</link></image><item><title>AutoBoxing in javaScript ! 📦</title><link>https://virgool.ir/@mkhbeats/autoboxing-in-javascript-vhgl0tfqffjj</link><description>Autoboxing? 📦?📤?📥?سلام primitive data type ها (بر خلاف ابجکت ها) ، هیچ متد یا پراپرتی ایی ندارند ، اما سوالی که در اولین لحظه برای ما ایجاد میشود اینکه پس این همه متد هایی که روی primitive  ها ، اعمال میکینم چیست ؟مثلاconst text = &#39;hello world&#39;.toUpperCase()یا مثلاconst num = 23.57949.toFixed(2)اینها متد هایی هستند که ما داریم رو primitive ها اعمال میکنیم ، داستان چیه ؟ مگه primitive  ها ، متد دارند؟دقیقا همینجا ، بحث autoboxing  مطرح میشود که البته این مورد مختص به JS  نیست و در باقی زبان ها هم وجود دارد ، از طرفی این مبحث ، به اسم دیگری با عنوان wrapper classes  هم شناخته می شود.به این معنا که ، primitive  ها همچنان بدون هیچ متد یا پراپرتی ای ندارند اما هنگامی که ما نیاز داریم که یک متدی روی این مقادیر ، اعمال کنیم ، در آن لحظه ، ابجکت متناسب با نوع آن مقدار ، آن value  را  box  یا به اصطلاح wrap  میکند و چون یک ابجکت آن را در بر گرفته ، اینجاست که متد مد نظر ، در دسترس قرار میگیرد و میتوان از قابلیت هایی که آن ابجکت متناسب با نوع مقدار در اختیار ما قرار میدهد ، استفاده کنیم منظور از ابجکت متناسب با نوع primitive value  چیست؟ حتما با فانکشن های Number() String() Boolean()  برخورد داشتین ، هر کدام از این ابجکت ها ، متد های خاص خود را دارند که هر کدام با توجه به نوع مقدار ، متد هایش قابل استفاده است ، اگر در کنسول به Number.prototype نگاه بندازید ، متد هایی را میبیند که قابل اجرا بر روی عدد ها هست و اگر به String.prototype  نگاه بندازید ، متد هایی را میبیند که قابل اعمال بر روی مقادیر از نوع string  است ، اینها در واقع همان wrapper object  هایی هستند که مقادیر primitive  متناسب با خود را wrap می کنند و متد مورد نظر اعمال خواهد شد و بعد از اعمال متد ، ان مقدارunBox  میشود و به ما برگردانده میشود و بعد از این مسئله با اینکه بنوعی تبدیل به ابجکت شده و متد اعمال شده ، بعد از آن مجدد تبدیل به یک مقدارprimitive  میشود و همچنان immutable  استپ.ن: رفتار این فانکشن ها ، محدود به این موردی که گفتیم نمیشود چرا که اینها constructor function هستند ، اگر در ابتدای این فانکشن ها new keyword  قرار داده شود ، رفتار متفاوتی از آنها را شاهد خواهیم بود.</description><category>mohammad khakhsoor</category><author>mohammad khakhsoor</author><pubDate>Thu, 07 Dec 2023 14:13:19 +0330</pubDate></item></channel></rss>