با گسترش فناوری وب، زبان جاوا اسکریپت به یکی از ابزارهای اصلی توسعه وبسایت تبدیل شده است. همانطور که در مقاله “راهنمای کامل دیتاتایپها در جاوا اسکریپت” خواندید، انواع دادههای مختلفی در زبان جاوا اسکریپت وجود دارد. هرکدام از این دادهها ویژگیها و کاربردهای مخصوص به خودشان را دارند.
کد یک وبسایت بزرگ را در نظر بگیرید. حجم کد یک وبسایت کامل میتواند صدها تا هزاران خط باشد. قطعا در این حجم کد، صدها متغیر و دیتاتایپهای مختلف تعریف میشوند. از آنجایی که نظم در برنامهنویسی یکی از مهارتهای مهم در برنامهنویسی محسوب میشود، برنامهنویس جاوا اسکریپت باید از روشهایی استفاده کند تا از این اطلاعات و دادهها به طور منظم و دستهبندی شده در کد استفاده کند تا در نهایت کد تمیز، خوانا و قابل فهم داشته باشد.
مفهوم Object یا اشیا در جاوا اسکریپت با همین هدف ایجاد شده است. Objects یا اشیا یکی از مفاهیم اساسی زبان جاوا اسکریپت هستند. این مقاله، یک راهنمای کاربردی دربارهی اشیا و کاربرد آن در جاوا اسکریپت است.
آنچه در این نوشته خواهیم داشت
اشیا (Object) در جاوا اسکریپت چیست؟
در جاوا اسکریپت، اشیاء یا Objects نوعی دیتاتایپ هستند که به برنامهنویس اجازه میدهند تا گروهی از اطلاعات مشابه را در یکجا نگه دارد.
به عنوان مثال، فرض کنید میخواهید اطلاعات ۳۰ فرد مختلف را ذخیره کنید. استفاده از ۳۰ متغیر جداگانه برای هر فرد و اطلاعاتشان میتواند کد را پیچیده و سنگین کند. اما با استفاده از اشیاء (Objects)، میشود این اطلاعات را به صورت مرتب و گروهبندی شده ذخیرهسازی کرد. به عبارت سادهتر، اشیاء مثل جعبههایی هستند که انواع مختلف دادهها (مثلاً نام، سن، آدرس) را درون خودشان نگه میدارند.
تفاوت اشیا با سایر انواع داده در جاوا اسکریپت
تفاوت اصلی بین اشیا (Objects) و دیگر دیتاتایپها در جاوا اسکریپت این است که اشیا قادر به نگهداری دادههای مختلف مانند اعداد، رشتهها، آرایهها، توابع و اشیاء دیگر هستند، در حالی که دیتاتایپهای دیگر محدود به یک نوع خاص از داده هستند. برای مثال یک متغیر از نوع Number تنها میتواند یک عدد را نگهداری کند و یک متغیر از نوع String تنها میتواند یک رشته را نگهداری کند.
به طور کلی از اشیا برای ذخیرهسازی دادههای مرتبط به یکدیگر و ساختاردهی منطقیتر کدها استفاده میشود. اشیا این امکان را فراهم میکنند تا دادههای مختلف با هر نوع ویژگیهایی در یک Object ذخیره شوند.
عملیاتهای مختلف Object در جاوا اسکریپت
تعریف Object در جاوا اسکریپت
برای تعریف یک شی یا Object در جاوا اسکریپت از سینتکس زیر استفاده میشود:
const object_name = {
key1: value1,
key2: value2
}
همانطور که در کد میبینید، در تعریف آبجکت، دو مولفه یعنی Key و Value وجود دارند. هر کلید یا “Key” با یک مقدار یا “Value” مرتبط است.
برای مثال کد زیر را در نظر بگیرید:
let person = { name: 'John', age: 30, hobbies: ['Reading', 'Sports'], greet: function() { console.log('Hello!'); } }; console.log(person.name); console.log(person.age); person.greet();
در این کد یک شیء (object) با نام person تعریف شده است. این شیء ویژگیهای مختلفی را دارد:
- name: با مقدار John که نام شخص را نشان میدهد.
- age: با مقدار 30 که سن شخص را نشان میدهد.
- hobbies: یک آرایه که دو عنصر دارد (Reading و Sports) و نشان دهنده سرگرمیهای شخص است.
- greet: یک تابع که وظیفهاش چاپ کردن پیام Hello! است.
سپس کد به ترتیب نام و سن شخص را چاپ میکند، و در نهایت تابع ()greet را صدا میزند که باعث چاپ پیام Hello! میشود.
خروجی کد:
John 30 Hello!
استفاده از اشیا دیگر در یک شی
همانطور که گفته شد یک شی میتواند حاوی اشیا دیگر باشد. به این مفهوم Nested Objects یا “شیء درونی” گفته میشود. به این معنا که، یک Object میتواند داخل خودش یک Object دیگر را نگه دارد.
در مثال زیر، یک Object به نام “student” تعریف شده است که دارای ویژگیهایی مانند name، age و marks است. اما ویژگی marks خود یک Object دیگری است که دو ویژگی دارد: science و math.
const student = { name: 'John', age: 20, marks: { science: 70, math: 75 } }; console.log(student.marks); console.log(student.marks.science);
خروجی کد:
{ science: 70, math: 75 } 70
استفاده از توابع در اشیا
یک شیء یا Object در جاوا اسکریپت میتواند شامل یک تابع هم باشد. در مثال زیر، یک Object به نام “person” تعریف شده است که دارای ویژگیهایی مانند name و age است. اما ویژگی greet یک تابع (یک قطعه کدی که یک کار خاص را انجام میدهد) است که به عنوان مقدار یک کلید (greet) در این Object قرار گرفته است.
const person = { name: 'Sam', age: 30, greet: function() { console.log('hello') } }; person.greet();
خروجی کد:
hello
تغییر مقدار یک ویژگی در اشیا
برای تغییر مقدار یک ویژگی یا Property، از عملگر مساوی (=) استفاده میشود. به این مثال توجه کنید:
فرض کنید یک شیء به نام “person” داریم که شامل ویژگی name با مقدار “John” است. اگر بخواهیم مقدار name را تغییر دهیم، میتوانیم از عملگر مساوی استفاده کنیم.
const person = {
name: 'John'
};
person.name = 'Alex';
بیشتر بخوانید: “مروری بر عملگرها و عبارات در جاوا اسکریپت“
اضافه کردن ویژگی جدید به اشیا
برخلاف برخی از زبانهای برنامهنویسی مانند جاوا و سیشارپ که بعد از ساخت شیء، امکان اضافه کردن ویژگی جدید به آن وجود ندارد، در جاوااسکریپت شما میتوانید پس از تعریف یک شیء، ویژگی جدیدی به آن اضافه کنید.
برای مثال در قطعه کد زیر، ویژگی یا خصوصیت age به شیء person اضافه و عدد ۲۵ به آن اختصاص داده شده است:
person.age = 25;
حذف یک ویژگی اشیا
برای حذف یک خصوصیت یا ویژگی از یک Object، از عملگر حذف (delete) استفاده میشود:
delete objectName.propertyName;
در مثال زیر، خصوصیت age از شیء person حذف میشود:
delete person.age;
بعد از اجرای این دستور، اگر بخواهید دوباره به ویژگی age دسترسی پیدا کنید، مقدار آن undefined خواهد بود. به این معنا که اطلاعات مرتبط با آن ویژگی حذف شده و دیگر در دسترس نیست.
بررسی وجود یک ویژگی در یک شیء
برای بررسی اینکه آیا یک خصوصیت در یک شیء وجود دارد یا خیر، از عملگر “in” استفاده میشود. عملگر “in” در صورتی که خصوصیتی با نام مورد نظر (propertyName) در داخل شیء مورد نظر (objectName) وجود داشته باشد، مقدار true، و در غیر اینصورت مقدار false را برمیگرداند.
در مثال زیر، یک شیء به نام employee ایجاد شده است که شامل ویژگیهایی مانند firstName، lastName و employeeId است.
let employee = { firstName: 'Peter', lastName: 'Doe', employeeId: 1 }; console.log('ssn' in employee); console.log('employeeId' in employee);
از آنجایی که ویژگی ssn در شیء employee وجود ندارد ، اما ویژگی employeeId وجود دارد، خروجی این کد به ترتیب به شکل زیر است:
false
true
روشهای دسترسی به ویژگیهای Object
برای دسترسی به مقدار (value) یک ویژگی خاص، دو روش کلی وجود دارد:
۱. استفاده از نقطه
objectName.key
برای مثال در کد زیر، یک Object به نام “person” با دو ویژگی (name و age) تعریف شده است:
const person = {
name: 'John',
age: 20,
};
console.log(person.name); // John
۲. استفاده از علامت کروشه
objectName["propertyName"]
برای مثال در کد زیر، یک Object به نام “person” با دو ویژگی (name و age) تعریف شده است:
const person = {
name: 'John',
age: 20,
};
console.log(person["name"]); // John
بیشتر بخوانید: “راهنمای نگارش رزومه برای توسعهدهندگان جاوا اسکریپت“
جمعبندی و نتیجهگیری
اشیاء در زبان برنامهنویسی جاوا اسکریپت، نقش بسیار مهم و کلیدی را در ساختار دادهها و کدنویسی ایفا میکنند. با استفاده از Object، میشود دادههای مختلف را به صورت دستهبندی شده و سازماندهی شدهای ذخیره کرد. این اشیاء شامل خصوصیات مختلفی هستند که میشود آنها را با استفاده از عملیاتی مانند اضافه کردن، تغییر دادن و حذف کردن، مدیریت نمود. همچنین، با استفاده از عملگرهای مانند “in” میتوان بررسی کرد که آیا یک خصوصیت مشخص در یک شیء وجود دارد یا خیر.
در دوره آموزش جاوا اسکریپت آکادمی آمانج، تمامی نکات فنی و تخصصی برنامهنویسی جاوا اسکریپت از پایه و به زبان ساده آموزش داده میشود.