آموزش آبجکت(Object) در جاوا اسکریپت
آبجکت به معنی شیء است. در جهان واقعی، اشیاء زیادی وجود دارد؛ ماشین، کتاب، گل و ... همه شیء هستند. هر شیء تعدادی ویژگی(property یا پروپرتی) دارد و کارهایی یا اَفعالی(Method یا متد) را انجام می دهد. بعنوان مثال، یک ماشین را بعنوان یک شیء در نظر بگیرید. این ماشین، ویژگی هایی(پروپرتی هایی) مانند وزن(weight) و رنگ(color) دارد. و متدهایی مانند استارت(start) و توقف(stop) دارد.
| آبجکت یا همان شیء | پروپرتی یا همان ویژگی | متد یا اَفعال |
|---|---|---|
![]() |
car.name = Fiat | car.start() |
| car.model = 500 | car.drive() | |
| car.weight = 850kg | car.brake() | |
| car.color = white | car.stop() |
همه ی ماشین ها، پروپرتی هایی دارند اما مقادیر پروپرتی ها در هر ماشین متفاوت است. و تمام ماشین ها متدهای مشابهی دارند، اما این متدها در زمان های مختلفی انجام می شوند.
آبجکت ها در جاوا اسکریپت
قبلاً یاد گرفتید که متغیرهای جاوا اسکریپت مانند ظرف هایی برای مقادیر داده ها هستند. در کد زیر، یک مقدار ساده(Fiat) به یک متغیر به نام car انتساب داده شده است:
آبجکت ها نیز مانند متغیرها هستند. اما آبجکت ها می توانند مقادیر زیادی را در خود نگه دارند. در کد زیر، چند مقدار(Fiat, 500, white) به یک متغیر به نام car انتساب داده شده است:
نکته: مقادیری که در آبجکت نوشته می شوند، به صورت جفت های name:value یا مقدار:نام هستند(نام و مقدار آن، با استفاده از یک علامتِ دونقطه از هم جدا می شوند). این یک تمرین متداول برای تعریف آبجکت ها با استفاده از کلمه کلیدی const است.
مفهوم آبجکت در جاوا اسکریپت
برای تعریف یا ایجاد یک آبجکت در جاوا اسکریپت به مثال زیر توجه کنید:
مثال شماره 3
const person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
امتحان کنیدفاصله های سفید(space) و خط های شکسته شده مهم نیستند. تعریف یک آبجکت می تواند چندین خط را اشغال کند:
مثال شماره 4
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
امتحان کنید
بررسی پروپرتی های آبجکت ها
به جفت های name:value در جاوا اسکریپت، ویژگی یا پروپرتی گفته می شود:
| مقدار پروپرتی | پروپرتی |
|---|---|
| John | firstName |
| Doe | lastName |
| 50 | age |
| blue | eyeColor |
دسترسی به پروپرتی های آبجکت
ما به دو طریق می توانیم به به پروپرتی های آبجکت ها دسترسی پیدا کنیم:
روش اول:
objectName.propertyName
یا:
روش دوم:
objectName["propertyName"]
نکته: آبجکت های جاوا اسکریپت، ظرف هایی برای نگهداری تعدادی مقدارِ نام گذاری شده هستند که به آنها پروپرتی می گوییم.
بررسی متدهای آبجکت ها در جاوا اسکریپت
آبجکت ها نیز می توانند متد(method) داشته باشند. متدها، اَفعالی هستند که می توانند در آبجکت ها اجرا شوند. متدها را می توانیم مانند تعریف تابع ها، در داخل پروپرتی ها ذخیره کنیم.
| مقدار پروپرتی | پروپرتی |
|---|---|
| John | firstName |
| Doe | lastName |
| 50 | age |
| blue | eyeColor |
| function() {return this.firstName + " " + this.lastName;} | fullName |
نکته: متد، یک تابع است که بصورت یک پروپرتی ذخیره شده است.
مثال شماره 7
const person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
در مثال بالا، کلمه کلیدی this به آبجکت person رجوع می کند:
مثلاً this.firstName یعنی پروپرتیِ firstName از this . در اینجا this.firstName یعنی پروپرتی firstName از آبجکت person .
کلمه ی کلیدی this چیست؟
کلمه ی کلیدی this در جاوا اسکریپت به یک آبجکت اشاره می کند. اینکه به کدام آبجکت اشاره می کند، بستگی به نحوه فراخوانی آن دارد. کلمه ی کلیدی this بسته به اینکه چگونه مورد استفاده قرار گیرد، به آبجکت های مختلفی اشاره می کند.
| کاربردهای کلمه کلیدی this |
|---|
| در یک متد از آبجکت، کلمه ی کلیدی this به آبجکت اشاره می کند. |
|
اگر از کلمه کلیدی this به تنهایی استفاده کنیم، این کلمه به آبجکت سراسری(global object) اشاره می کند. |
|
در یک تابع، اگر در حالت strict باشیم، کلمه ی کلیدی this تعریف نشده یا undefined است. |
|
در یک رویداد(event)، کلمه ی کلیدی this به عنصری اشاره می کند که رویداد را دریافت کرده است. |
|
متدهایی مانند call() و apply() و bind() می توانند کلمه کلیدی this را به هر آبجکتی رجوع دهند. |
نکته: کلمه ی کلیدی this، یک متغیر نیست. و ما نمی توانیم مقدار this را تغییر دهیم.
توضیحی در مورد کلمه کلیدی this
در تعریف یک تابع، کلمه ی کلیدی this، به مالک تابع رجوع می کند. در مثال بالا، کلمه ی کلیدی this همان آبجکت person است که مالک تابع fullName است. به عبارت دیگر، this.firstName یعنی پروپرتی firstName از آبجکت person.
دسترسی به متدهای آبجکت ها در جاوا اسکریپت
ما به روش زیر، می توانیم به یک متد از یک آبجکت دسترسی پیدا کنیم:
مثال شماره 8
objectName.methodName()
اگر بخواهیم به یک متد، بدون استفاده از یک جفت پرانتز () دسترسی پیدا کنیم، باعث می شود تعریف تابع برگردانده(return) شود:
رشته ها و اعداد و بولین ها را بعنوان یک آبجکت تعریف نکنید
وقتی که یک متغیر جاوا اسکریپت با کلمه کلیدی new تعریف شود، این متغیر بعنوان یک آبجکت ایجاد می شود:
مثال شماره 11
x = new String(); // بعنوان یک آبجکت رشته x تعریف
y = new Number(); // بعنوان یک آبجکت عددی y تعریف
z = new Boolean(); // بعنوان یک آبجکت بولین z تعریف
از آبجکت های Number و String و Boolean اجتناب کنید. زیرا باعث پیچیده شدن کدهای شما می شود و سرعت اجرای کدها را کند می کند.
نکته: بعداً در مورد آبجکت ها بیشتر توضیح خواهیم داد.
- بازدید: 683

1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.