بحث شیرین obj در جاوا اسکریپت بسیار بحث مهمی هست ما معمولا obj ها کاربرد زیادی در درست کردن فایل های json داره که مبنای درست کردن api محصوب می شود. در obj ها که معمولا دارای دو قسمت بسیار مهم هست که استاد به خوبی به اونا اشاره کرد یک قسمت کلید ها که (keys) و یک قسمت (values) که از این کلید ها و مقدارها به صورت مکرر در برنامه های خودمون استفاده می کنیم . مقدارهایی که می تونیم در OBJECT استفاده کنیم می تونند: bool, string,null و number باشند یک قابلیت که باز بسیار مهم هست تعریف کردن آرایه ها درون obj هست ولی تنها مقداری که ممنوع هستش تعریف کردن توابع function ها در obj ها است و باید بسیار حواستون جمع کنید از این کار اجتناب کنید. ولی اگر بخواهیم در توابع function ها ابجکت تعریف کنیم باید از ویژگی this استفاده کنیم .
دوستان اگه اشتباهی دید لطفا تصحیح کنید . ممنون میشم
انتهای مطلب رو اشتباه فرمودید ما در object میتوانیم تابع(متد) تعریف بکنیم و هیچ مشکلی ندارد اما اگر داخل آن تابع بخوایم از object پدر استفاده بکنیم برای این که بعدا مشکلی پیش نیاید از کلمه this استفاده بکنیم.
let
user =
{
name:
"John"
,
age:
30
,
sayHi
(
)
{
alert
(
user.
name )
;
// leads to an error
}
}
;
let
admin =
user;
user =
null
;
// overwrite to make things obvious
admin.
sayHi
(
)
;
//
در اینجا چون از اسم object به جای this استفاده شده و بعدا آن object با null مقدار دهی شده دیگر غیرقابل دسترسی خواهد بود و بخاظر همین از this استفاده میشود.
let
user =
{
name:
"John"
,
age:
30
,
sayHi
(
)
{
// "this" is the "current object"
alert
(
this
.
name)
;
}
}
;
user.
sayHi
(
)
;
// John
میشه توی obj یه method تعریف کرد ولی بصرفه نیست چون اون method فقط مختص به اون obj میشه مگر با استفاده کردن از Function.bind یا Function.call و Function.apply.
جلو تر با یاد گرفتن inheritance و استفاده از prototype ها یاد میگیریم که method ها و برخی از attribute ها رو به prototype اضافه کنیم تا همه ی obj ها آن ها رو به ارث ببرند تا برنامه بهینه تری داشته باشیم و مجبور نشیم برای ساختن یه obj مشابه دوباره این همه کد بزنیم و method ها نیز بین تمام obj ها به اشتراک گذاشته میشن و این یعنی یکبار در RAM فضا اشغال میکنند و این یعنی مصرف بهینه منابع.