ویرگول
ورودثبت نام
هومن امینی
هومن امینیبرای یادداشت اینجا می نویسم اگر بدرد کسی هم خورد تو روحم گل باز میشه - مهندس نرم افزار - توسعه دهنده وب در فناپ
هومن امینی
هومن امینی
خواندن ۳ دقیقه·۶ سال پیش

مفاهیم، نکته و ترفندهای جی اس - قسمت ۳ - 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
جاوااسکریپتبرنامه نویسی وبفرانت اندjavascriptreactjs
۱۰
۲
هومن امینی
هومن امینی
برای یادداشت اینجا می نویسم اگر بدرد کسی هم خورد تو روحم گل باز میشه - مهندس نرم افزار - توسعه دهنده وب در فناپ
شاید از این پست‌ها خوشتان بیاید