مفاهیم، نکته و ترفندهای جی اس - قسمت ۳ - Object ها

ویدیو این گفتار را در لینک های زیر می توانید، مشاهده بفرمایید.یوتیوبآپاراتاشیاء (Objects) در جاوا اسکریپتجاوااسکریپت یک زبان شی گرا است اما مانند سایر زبان های برنامه نویسی شی گرا بر پایه کلاس نیست. آیجکت ها مانند سایر برنامه نویسی ها شی گرا مجموعه ای از ویژگی‌ها (Property) و عملکردها (Functionality) و یا همان متدها است.ایجاد آبجکت ها به صورت زیر می باشد و همانطور که مشاهده می فرمایید، آبجکت ها در جاوااسکریپت به صورت key و value هستند.var myObj={ name:&quotali&quot, familyName:&quotalavi&quot, age:&quot30&quot } console.log(myObj)توجه : آبجکت ها می توانند متد داشته باشند اما با روش معمول فرق دارند و متد در آبجکت ها را در قسمت فانکشن ها توضیح خواهیم داد.در جاوااسکریپت نوع ويژگی ها مانند سایر برنامه نویسی های شی گرا به صورت Public و Private نیست و به عبارتی تمام ویژگی ها Public هستند.راه های دسترسی به ويژگی ها(property ها)دسترسی به دو صورت زیر انجام می پذیرد.راه اول نقطه (dot notation)راه دوم براکت (notation [ ])مثال:var myObj={ name:&quotali&quot, familyName:&quotalavi&quot, age:&quot30&quot } //access property with dot console.log(myObj.name) //&quotali&quot //access property with [] console.log(myObj[&quotname&quot]) //&quotali&quotتوجه :اگر ویژگی (property) وجود نداشته باشد، دسترسی به آن منجر به خطا نمی‌گردد و undefined برگردانده می‌شود.فرق بین این دو روش دسترسی چیست؟ممکن است اسم property یک کلمه رزرو باشد و تو این حالت از طریق نقطه نمی توانید دسترسی پیدا کنید و تنها راه از طریق براکت است مثال ذیل:var myObj={ &quot1&quot:&quot30&quot } // console.log(myObj.1) //error console.log(myObj[&quot1&quot]) // &quot30&quot و حالت دیگر این است که ممکن است از طریق متغییر و داینامیک بخواهیم به property آبجکت دسترسی پیدا نماییم که در این حالت هم مانند مثال زیر تنها راه از طریق براکت است.var myObj={ name:&quot30&quot } var xxx = &quotname&quot console.log(myObj[xxx]) //&quot30&quotآبکجت های تو در تومقدار property همانطور که می تواند دارای هر نوع داده‌ی primitive باشد همچنین می تواند دارای مقدار آبجکت نیز باشد و یا به عبارتی هر آبجکت می توانید property هایی داشته باشید که خود یک آبجکت باشد و به این حالت که یک ویژگی خود دارای مقدار آبجکت باشد، آبجکت ها ی تو در تو گفته می شود.var myObj = { name:&quotali&quot, family:&quotalavi&quot, age:&quot30&quot, address:{ city:&quottehran&quot, ave:&quotxxxxxx&quot } }دسترسی به آبجکت های تو در تو به شکل زیر است.console.log(myobj.address.city) // tehran or console.log(myobj.address[&quotcity&quot] // tehranهمانطور که در قسمت قبلی عرض شد، آبجکت ها دارای نوع داده Reference هستند، به این معنی است که در بیشتر زبان های برنامه نویسی Object به یک فضای حافظه Heap اشاره دارند و اگر دو آبکجت را مساوی هم قرار دهیم، دو آبکجت به یک فضای حافظه اشاره دارند و اگر یکی را تغییر دهیم دیگر نیز تغییر خواهد کرد و این تفاوت نوع داده primitive و reference می باشد مثل ذیل:var myObj={ name:&quotali&quot, family:&quotalavi&quot, age:&quot30&quot } var myObj2 = myObj; myObj.name=&quothassan&quot console.log(myObj.name); //&quothassan&quot console.log(myObj2.name); //&quothassan&quotدر اینجا قسمت آبجکت ها را به اتمام می رسانیم و در قسمت بعدی به نکته‌های آرایه‌ها در جاوااسکریپت می‌پردازیم. https://youtu.be/d4h9Vpxjdbk https://www.aparat.com/v/2nePA https://virgool.io/@amini.hooman/%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%86%DA%A9%D8%A7%D8%AA-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-t8ctnpi4p4qx https://virgool.io/@amini.hooman/%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%86%DA%A9%D8%AA%D9%87-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-o3mcfglskftl