<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Mahdiar86</title>
        <link>https://virgool.io/feed/@koohkan96</link>
        <description>یه برنامه نویس .Net  و JS</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:20:15</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/241472/avatar/5q7YEm.png?height=120&amp;width=120</url>
            <title>Mahdiar86</title>
            <link>https://virgool.io/@koohkan96</link>
        </image>

                    <item>
                <title>بررسی Reflect ها در جاوا اسکریپت</title>
                <link>https://virgool.io/Rocket/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-reflect-%D9%87%D8%A7-%D8%AF%D8%B1-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-dvvxx5oqq8ag</link>
                <description>این تصویر عنوانی ندارد باتشکر !سلام . امروز میخوایم یه مبحث خیلی جذاب رو بررسی کنیم. Reflect Api در جاوا اسکریپت !ابتدا به این موضوع میپردازیم که اصلا این بنده خدا چی هست ؟بصورت کلی رفلکت یک شی داخلی ( built-in object ) هست که روش ها و متدهایی رو برای عملیات جاوا اسکریپت قابل رهگیری(interceptable) ارائه می ده.مثل روش های کنترل کننده پروکسی . Reflect یک شی تابع نیست، بنابراین قابل ساخت(constructible) نیست.بر خلاف بسیاری از اشیاء سراسری(global)، Reflect یک سازنده نیست. شما نمی تونید اون رو با یک عملگر جدید استفاده کنید یا شی Reflect رو به عنوان یک تابع فراخوانی کنید. تمام خصوصیات و متدهای Reflect ثابت هستند (دقیقاً مانند شیء Math).اندر مشکلات jsبررسی چند متد :1- اولین متد ‌:applyReflect.apply(target, thisArgument, argumentsList)استفاده ی اون هم به این شکل هست . برای مثال :)console.log(Reflect.apply(&amp;quot&amp;quot.charAt, &#039;mahdiar&#039;, [4]));در این مثال ابتدا charAt رو فراخونی کردیم بعدش به عنوان خود رشته &quot;mahdiar&quot; و به عنوان argument , چهار رو پاس دادیم و نتیجه همون نتیجه عادی هستاپلای فانکشن هدف رو با آرگومان هایی که توسط پارامتر argumentsList مشخص شده فراخوانی می کنه. این هم یه مثال دیگه برای اپلای : console.log(Reflect.apply(Math.pow, undefined, [3,4]))منتها مثال دوم کمی تفاوت داره , چون Math.pow دوتا عدد قبول میکنه خودش Argument نداره اون بخش رو undefined قرار میدیم2- متد definePropertyاین متد هم خیلی پرکاربرد هست و بصورت خلاصه برای این هست که یک پراپرتی رو بعد از ساخت یک شی بهش پاس بدیم (دقیقا مثل Object.defineProperty با این تفاوت که یک مقدار Boolean برمیگردونه)const mahdiar= {};if (Reflect.defineProperty(mahdiar, &#x27;age&#x27;, { value: 14})) {  console.log(&#x27;age created!&#x27;);} else { console.log(&#x27;problem creating age&#x27;);}console.log(mahdiar.age);// expected output: 143- متد deletePropertyمتد Reflect.deleteProperty هم یک تارگت و یک کلید پراپرتی قبول میکنه و اون رو خیلی شیک و مجلسی پاک میکنه (خیلی نیاز به مثال نداره , کاملا واضحه :) )4- متد getمتد Reflect.get هم یک تارگت و کلید پراپرتی میگیره و Value اون پراپرتی رو برمیگردونهاین هم مثالش :const object1 = {x: 1};console.log(Reflect.get(object1, &#x27;x&#x27;));const array1 = [&#x27;zero&#x27;, &#x27;one&#x27;];console.log(Reflect.get(array1, 1));4- متد ownKeysمتد Reflect.ownKeys هم یک ارایه از کلید های target رو برمیگردونه برای مثال :const mahdiar = {  hobby: &#x27;Sleeeeeeeeeeeeeeeeep&#x27;, favoriteFood: &#x27;Kebab&#x27;};console.log(Reflect.ownKeys(mahdiar));// expected output: Array [&quot;hobby&quot;, &quot;favoriteFood&quot;]5- متد hasمتد Reflect.has هم مثل موارد قبلی یه تارگت و یه کلید میگیره و Boolean برمیگردونه. دوشواری نداره که :)const pride = {nickName: &quot;عمر دست خداست پراید وسیلست&quot;};console.log(Reflect.has(pride, &#x27;nickName&#x27;));//  trueconsole.log(Reflect.has(pride, &#x27;age&#x27;));// false6- متد constructمتد Reflect.construct مثل عملگر new عمل می کنه، اما به عنوان یک تابع. همچنین گزینه اضافه شده برای تعیین Prototype متفاوت رو می ده.function calc(a, b, c) {  this.sum = a + b + c;}const args = [1, 2, 3];const object2 = Reflect.construct(func1, args);7- متد setمتد Reflect.set هم سه تا مقدار قبول میکنه . ابتدا هدف (Target) بعد نام کلیدی که میخواین برای Property بزارین و سوم مقدار اون پراپرتی و اون پراپرتی رو به تارگت اضافه میکنهconst object1 = {};Reflect.set(object1, &#x27;test&#x27;, 42);همینطور که در مثال میبینید با استفاده از این متد پراپرتی test رو با مقدار 42 به object1 اضافه کردیماینا بخشی از متدهای Reflect بود اگر تمایل داشتین خیلی کامل و جامع به بررسیش بپردازین این لینکخیلی مفید هست. همچنین اگر این نوشته براتون مفید بوده لطفا نظرتون رو بگید و این نوشته رو بپسندید :))) </description>
                <category>Mahdiar86</category>
                <author>Mahdiar86</author>
                <pubDate>Tue, 03 May 2022 21:19:19 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش رایگان Unit Testing ( تست نرم افزار ) در زبان C#</title>
                <link>https://virgool.io/@koohkan96/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B1%D8%A7%DB%8C%DA%AF%D8%A7%D9%86-unit-testing-%D8%AA%D8%B3%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%B2%D8%A8%D8%A7%D9%86-c-oaf1ezhkgvgt</link>
                <description>در این آموزش که از سری آموزش های ماش همدانی ( Code With Mosh ) است به تست نویسی با کمک NUnit و Moq پرداخته شده استنام اصلی آموزش : Unit Testing For C# Developersبه طور خلاصه این روش نوشتن کد است که کد خود را تست کرده و سپس آن فرایند را به صورت خودکار انجام دهید.چرا تست نرم افزار را بیاموزیم؟چرا باید کد اضافی نوشت؟ آیا نوشتن آن زمان بیشتری نمی برد؟ آیا این سرعت شما را کند می کند؟ چرا فقط برنامه را اجرا نکنید و آن را مانند یک کاربر نهایی آزمایش نکنید؟این گونه فکر کردن اشتباه بسیاری از توسعه دهندگان است.برای مثال اگر در حال ساخت یک برنامه پیچیده هستید یا روی یک برنامه قدیمی کار می کنید ، آزمایش دستی تمام عملکردهای مختلف خسته کننده است و زمان قابل توجهی طول می کشد.با افزایش حجم برنامه شما ، هزینه و مدت زمان آزمایش دستی افزایش می یابد. و هرگز 100٪ مطمئن نیستید که آیا تمام بخش های برنامه را به طور کامل آزمایش کرده اید. تا زمانی که نرم افزار خود را منتشر نکنید و از رئیس خود یا کاربر نهایی تماس نگیرید ، هرگز مطمئن نیستید که کد شما واقعاً کار می کند!چندین مطالعه نشان داده است که هرچه بعداً یک اشکال در چرخه عمر توسعه نرم افزار گرفتار شود ، هزینه آن برای استارت آپ بیشتر است.تست های خودکار به شما کمک می کند تا اشکالات را در چرخه عمر توسعه نرم افزار ، درست در هنگام کد نویسی ، تشخیص دهید. این آزمایشات قابل تکرار هستند. آنها را یکبار بنویسید و بارها و بارها اجرا کنید.لینک دانلود کاملا رایگان از فایل بوی</description>
                <category>Mahdiar86</category>
                <author>Mahdiar86</author>
                <pubDate>Tue, 11 Jan 2022 19:12:09 +0330</pubDate>
            </item>
                    <item>
                <title>مواردی که در ES6 به جاوا اسکریپت اضافه شد در یک نگاه</title>
                <link>https://virgool.io/@koohkan96/%D9%85%D9%88%D8%A7%D8%B1%D8%AF%DB%8C-%DA%A9%D9%87-%D8%AF%D8%B1-es6-%D8%A8%D9%87-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%D8%B4%D8%AF-%D8%AF%D8%B1-%DB%8C%DA%A9-%D9%86%DA%AF%D8%A7%D9%87-x84nufvkha0z</link>
                <description>جاوا اسکریپت مدرن یک به روز رسانی قابل توجه برای زبان برنامه نویسی جاوا اسکریپت است. این اولین به روز رسانی اصلی این زبان از زمان ES5 است که در سال 2009 اتفاق افتاد. بنابراین ، ES2015 اغلب ES6 نامیده می شود.تغییرات ES6 :جاوا اسکریپت letدستور let به شما امکان می دهد یک متغیر با محدوده بلوک اعلام کنید.var x = 10;{
  let x = 2;
  //x = 2;
}
x = 10;جاوا اسکریپ constدستور const به شما امکان می دهد یک ثابت (متغیر جاوا اسکریپت با مقدار ثابت) اعلام کنید.این متغیر ها مشابه متغیرهای let هستند ، با این تفاوت که مقدارشان را نمی توان تغییر داد.Arrow Functionsاین توابع در واقع یک نحو کوتاه نوشتن توابع می باشد , شما نیازی به کلمه کلیدی فانکشن ، return و آکولاد ندارید.// ES5 var x = function(x, y) { 
return x * y;
 } 

// ES6 const x = (x, y) =&gt; x * y;برای تعریف Arrow Function ها بیشتر از const استفاده می شود زیرا عبارت تابع همیشه یک مقدار ثابت استکلاس هاجاوا اسکریپت مدرن کلاس ها را معرفی کردیک کلاس یک نوع تابع است ، اما به جای استفاده از کلمه کلیدی فانکشن برای شروع آن ، از کلاس کلمه کلیدی استفاده می کنیم و ویژگی ها در داخل متد () constructor ( سازنده ) اختصاص داده می شوند.برای ایجاد کلاس از کلاس کلید واژه استفاده کنید و همیشه یک متد سازنده اضافه کنید.متد سازنده هر بار که شیء کلاس مقداردهی می شود فراخوانی می شود.مفهوم OOP ( شی گرایی ) در هر زبان برنامه نویسی مبحثی مهم به حساب می آید class Car { 
constructor(brand) {
 this.carname = brand; 
    }
 }
مقادیر پیش فرض پارامترسینتکس جدید اجازه می دهد تا پارامترهای تابع دارای مقادیر پیش فرض باشند.function myFunction(x, y = 10) {
 // y is 10 if not passed or undefined return x + y; 
}
 myFunction(5); // will return 15
افزوده شدن متد Number.isInteger()این متد یک ورودی می گیرد و اگر تایپ عدد وارد شده عدد صحیح ( Integer ) بود True و در غیر این صورت False بر می گرداندممنون که در این مقاله با ما همراه بودید پیشنهاد می کنیم اگر می خواهید ES6 را جامع و کامل آموزش ببینید </description>
                <category>Mahdiar86</category>
                <author>Mahdiar86</author>
                <pubDate>Mon, 06 Sep 2021 17:05:32 +0430</pubDate>
            </item>
            </channel>
</rss>