<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محسن فلاح‌نژاد</title>
        <link>https://virgool.io/feed/@mohsenfallahnjd</link>
        <description>https://themohsen.me || Front-End @ Yasna.team</description>
        <language>fa</language>
        <pubDate>2026-06-07 02:19:32</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/81461/avatar/OwoUit.png?height=120&amp;width=120</url>
            <title>محسن فلاح‌نژاد</title>
            <link>https://virgool.io/@mohsenfallahnjd</link>
        </image>

                    <item>
                <title>بررسی نحوه‌ی کارکرد this در Class های جاوا اسکریپت</title>
                <link>https://virgool.io/coderlife/this-in-js-class-xadzwdkjs58m</link>
                <description>اگه مطلب قبلی که درباره class در جاوا اسکریپت بود رو خونده باشین،تا حدی با مفهومش آشنا هستیناگرم نخوندین که بنظرم قبل از ادامه دادن این مطلب، برید سراغش و بعدش بیاید اینجا.اگه یادتون باشه، گفتیم که تعریف کلاس به چه صورتی هستش و آبجکت هاش چطوری ساخته میشنحالابحثی که اینجا وجود داره ، استفاده از this هستش و چیزی که داره بهش اشاره میکنه.بیاید این مثال رو باهم بررسی کنیم:توی مثال بالا، یک کلاس به اسم StaticMethodCall ساختیم و برای constructor داخلش هم دوتا دستور گذاشتیم که قرار هست برامون متد ()StaticMethod رو اجرا کنن و خروجیش رو نمایش بدن. ( البته به عنوان پیش زمینه ذهنیتون، یه توضیح بدم =&gt; متد‌هایی که نوعشون static تعریف میشه، مستقیم با اسم کلاس فراخوانی میشن. ینی نمیتونیم با آبجکتی که از روی کلاس میسازیم صداشون بزنیم. بنظرم برای درک بیشتر این بحث برید و داکیومنت MDN رو درباره‌اش بخونید.)حالا با توجه به چیزایی که گفتم، بنظرتون خروجی این کد چی میشه؟اگه ما یه مدل از روی کلاسمون بسازیم و &quot; constructor &quot;ای  که براش تعریف کردیم اجرا بشه، چه نتیجه‌ای رو برامون چاپ میکنه؟! خطا داریم یا همه چی درست اجرا میشه و ما یه آبجکت سالم برامون ساخته میشه؟! بنظرم برگردین و یه بار دیگه کدش رو نگاه کنید :)اگه این کد رو بنویسید و اجراش کنید، میبینید که مدلِ ما بدون ایراد ساخته میشه و عبارت &#x27;static method has been called.&#x27; دوبار چاپ میشه، اونم بدون هیچ ایرادی..!اما چطوری؟!اگه به تعریف مفهوم class توی JS توجه کرده باشین،حتما یادتون میاد که درباره‎‌اش اینطوری گفتیم:چیزی که ما ازش به عنوان کلاس نام میبریم،یک نوع فانکشن مخصوصه با خصوصیات یک class. ینی بعد از تعریف کردنش، اون فانکشن مخصوص اجرا میشه و برای ما، یک آبجکت میسازه با همون Prototype های مورد انتظار و موجود در کلاس.پس با این حساب میتونیم بگیم کهما با یه فانکشن طرفیم که بعد از هربار صدا زدن Class داره اجرا میشه.و این دقیقا چیزیه که ما از تعریف Class انتظار داریم، درسته؟خب! پس مشخصا عبارت ()this.constructor داره به همین فانکشن اشاره میکنه و دقیقا کلاس ماست.به عبارت دیگه، وقتی داریم متد ()StaticMethod رو صدا میزنیم، و بجای اسم کلاسمون، عبارت ()this.constructor رو مینویسیم، دقیقا داریم کلاس رو صدا میزنیم و ()this.constructor برابر هست با خودِ کلاس.بنظرم برای اینکه این مطلب خوب جا بیفته، بیاید همین عبارتِ ()this.constructor رو توی کنسول چاپ کنیم تا ببینیم خروجیمون چی میشه.( بنظرم خودتون هم این کار رو انجام بدین تا متوجه اتفاقی که داره میفته بشین )اگه دقت کنید، توی تعریف constructor، تنها دستوری که گذاشتم، چاپ کردن عبارت this.constructor هست و بعد از class هم یه مدل ازش میسازم تا ببینم چه خروجی‌ای رو بهمون نشون میده.و همونطور که میبینید، چیزی که گفتم داره اتفاق میفته و به ازای دستورِ console.log(this.constructor);دقیقا کلاسِ تعریف شده‌ی ماست که داره توی کنسول چاپ میشه.امیدوارم توضیحاتم مفید بود باشه و خوشحال میشم اگه سوالی براتون ایجاد شد، نظری داشتین یا خواستین درباره‌اش بیشتر صحبت کنیم بهم پیام بدین ?✌</description>
                <category>محسن فلاح‌نژاد</category>
                <author>محسن فلاح‌نژاد</author>
                <pubDate>Mon, 28 Sep 2020 12:57:01 +0330</pubDate>
            </item>
                    <item>
                <title>بررسی مفهوم Class در جاوا اسکریپت</title>
                <link>https://virgool.io/yasnateam/defining-classes-in-js-tr9eikelmrh7</link>
                <description>شاید تا حالا هربار که از تعریف کلاس توی جاوا اسکریپت بحث شده ، یه نفر گارد گرفته که &quot; نههههه، مگه میشه توی JS کلاس تعریف کرد؟؟؟&quot;اولا که باید بگم بله میشه تعریف کرد، مثه تعریف کلاس توی زبان های دیگه و با همون خصوصیات. اما خب، منطقا یکم دستوراتش فرق داره که میشه چند دقیقه وقت گذاشت، اینجا رو مطالعه کرد و ازش استفاده کرد.اما چیزی که بین تعریف کلاس توی JS و زبان های دیگه تفاوت ایجاد میکنه، اتفاقیِ که هنگام ساخته شدن کلاس توی موتور جاوا اسکریپت رخ میده.بذارید از اینجا شروع کنیم که این موضوع توی زبان های دیگه به چه صورته؟ توی زبان های دیگه class به عنوان یک مفهوم، از پایه کد نویسی شده و واقعا وجود داره، در صورتی که توی JS دقیقا برعکسه.ینی اساسا مفهومی به عنوان class تعبیه نشده و چیزی که ما ازش به عنوان کلاس نام میبریم،یک نوع فانکشن مخصوصه با خصوصیات یک class. ینی بعد از تعریف کردنش، اون فانکشن مخصوص اجرا میشه و برای ما، یک آبجکت میسازه با همون Prototype های مورد انتظار و موجود در کلاس.خب این چه فایده‌ای داره؟ چرا خودمون یه فانکشن ننویسیم با همون خصوصیات مورد نظرمون و Constructorاش و باقی ماجرا؟!به دوتا دلیل: اولیش اینکه بدنه‌ی این فانکشنِ مخصوص روی Strict mode قرار داره ( و ECMAScript ئه که داره این کار رو انجام میده ) و دومیش تفاوتش توی مسئله‌ای به نام Hoisting.توی این فانکشن مخصوص ( که ما داریم به عنوان کلاس ازش استفاده میکنیم ) یه تفاوت مهم با فانکشنای دیگه وجود داره ، اونم اینه که حتما باید قبل از اینکه ازش استفاده کنیم، تعریف شده باشه.</description>
                <category>محسن فلاح‌نژاد</category>
                <author>محسن فلاح‌نژاد</author>
                <pubDate>Sun, 20 Sep 2020 21:26:04 +0430</pubDate>
            </item>
                    <item>
                <title>بررسی عبارات در جاوا اسکریپت</title>
                <link>https://virgool.io/yasnateam/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%86%D9%88%D8%B4%D8%AA%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-return-hz3zssiyvrgr</link>
                <description>یه سوال میدونید خروجی این قطعه کد چی میشه ؟ بنظرم قبل از اینکه برید و پایین تر رو نگاه کنید، جوابی که فکر میکنید ممکنه درست باشه رو یادداشت کنید :)این یکی چی؟ درباره‌ی این چی فکر میکنید؟شاید این دوتا قطعه کد تو نگاه اول تفاوت خاصی نداشته باشن، اما اگه اجراشون کنید، میبینید که توی نتیجه خیلی فرق داره :)توی قطعه کد اولی ، وقتی که بعد از دستور return ، فاصله افتاده و { foo: &#x27;bar&#x27; } توی خط بعد ساخته شده ، چیزی که اجرا میشه اینه:return ;و در نتیجه خروجی هم برابر میشه با  undefined.اما قطعه کد دوم همون جواب مورد انتظار ما ینیreturn { foo: &#039;bar&#039; }رو انجام میده که خب منطقیه اما این اتفاق برای چی رخ میده؟موتور اصلی جاوا اسکریپت، طوری تعبیه شده که در این موارد، عبارتی رو درنظر میگیره که در مقابل دستور نوشته شده باشه، وگرنه خودش یه ; میذاره انتهای خط.ینی اینجا وقتی به عبارت return میرسه ، چیزی برای انجام دستور نمیبینه، پس جلوش یه ; در نظر میگیره و undefined میشه جواب ما</description>
                <category>محسن فلاح‌نژاد</category>
                <author>محسن فلاح‌نژاد</author>
                <pubDate>Sat, 19 Sep 2020 21:40:04 +0430</pubDate>
            </item>
            </channel>
</rss>