اشیاء (Objects) در جاوا اسکریپت از مهمترین و پرکاربردترین ساختارهای دادهای هستند. آنها به ما اجازه میدهند تا مجموعهای از دادهها و رفتارها را در قالب یک واحد منظم ذخیره و مدیریت کنیم. در این مقاله، به بررسی مفاهیم پیشرفته اشیاء، شامل خصوصیات (Properties) و متدها (Methods) میپردازیم و نحوه استفاده از آنها را با مثالهای عملی شرح میدهیم.
در جاوا اسکریپت، اشیاء میتوانند با استفاده از سینتکس آبجکت لیترال (Object Literal) یا سازندههای (Constructors) جاوا اسکریپت ایجاد شوند.
آبجکت لیترال رایجترین روش برای ایجاد اشیاء در جاوا اسکریپت است. در این روش، اشیاء با استفاده از جفتهای کلید-مقدار تعریف میشوند.
const person = {
firstName: 'John',
lastName: 'Doe',
age: 30
};
همچنین میتوانید اشیاء را با استفاده از سازنده Object یا توابع سازنده (Constructor Functions) ایجاد کنید.
const person = new Object();
person.firstName = 'John';
person.lastName = 'Doe';
person.age = 30;
خصوصیات (Properties) در جاوا اسکریپت مقادیر مرتبط با یک شیء هستند که میتوانند انواع مختلف دادهای مانند اعداد، رشتهها، آرایهها، اشیاء دیگر یا حتی توابع باشند.
به خصوصیات یک شیء میتوان از دو روش دسترسی پیدا کرد:
نوتیشن نقطهای (Dot Notation):
console.log(person.firstName); // Output: John
نوتیشن براکت (Bracket Notation):
console.log(person['lastName']); // Output: Doe
نوتیشن براکت زمانی مفید است که نام خصوصیت به صورت پویا تعیین شود یا شامل کاراکترهایی باشد که در نوتیشن نقطهای پشتیبانی نمیشوند.
شما میتوانید در هر زمان به یک شیء، خصوصیات جدید اضافه کرده یا خصوصیات موجود را تغییر دهید.
person.middleName = 'William'; // اضافه کردن خصوصیت جدید
person.age = 31; // تغییر مقدار خصوصیت موجود
console.log(person); // Output: { firstName: 'John', lastName: 'Doe', age: 31, middleName: 'William' }
خصوصیات یک شیء را میتوان با استفاده از عملگر delete حذف کرد.
delete person.age;
console.log(person); // Output: { firstName: 'John', lastName: 'Doe', middleName: 'William' }
برای بررسی وجود یک خصوصیت در یک شیء، میتوان از عملگر in یا متد hasOwnProperty() استفاده کرد.
console.log('firstName' in person); // Output: true
console.log(person.hasOwnProperty('age')); // Output: false
متدها (Methods) توابعی هستند که به عنوان خصوصیتهای یک شیء تعریف میشوند. آنها به ما اجازه میدهند تا رفتارها و عملکردهای مربوط به آن شیء را تعریف کنیم.
میتوان متدها را در هنگام تعریف شیء یا بعداً به آن اضافه کرد.
const calculator = {
add: function(a, b) {
return a + b;
},
subtract: function(a, b) {
return a - b;
}
};
console.log(calculator.add(5, 3)); // Output: 8
console.log(calculator.subtract(5, 3)); // Output: 2
همچنین میتوان از سینتکس جدیدتر برای تعریف متدها استفاده کرد:
const calculator = {
add(a, b) {
return a + b;
},
subtract(a, b) {
return a - b;
}
};
کلمه کلیدی this به شیء جاری که متد در آن تعریف شده است اشاره دارد.
const person = {
firstName: 'John',
lastName: 'Doe',
fullName() {
return this.firstName + ' ' + this.lastName;
}
};
console.log(person.fullName()); // Output: John Doe
استفاده از this به ما اجازه میدهد تا به خصوصیات دیگر شیء از داخل متد دسترسی داشته باشیم.
جاوا اسکریپت امکان تعریف خصوصیات اشیاء با ویژگیهای بیشتری را فراهم میکند که با استفاده از متد Object.defineProperty() میتوان آنها را کنترل کرد. این ویژگیها شامل قابلیت شمارش (enumerable)، قابل تنظیم بودن (configurable)، و قابلیت نوشتن (writable) است.
با استفاده از Object.defineProperty() میتوان ویژگیهای یک خصوصیت را تنظیم کرد.
const person = {};
Object.defineProperty(person, 'firstName', {
value: 'John',
writable: false, // نمیتوان مقدار خصوصیت را تغییر داد
enumerable: true, // خصوصیت در حلقهها قابل مشاهده است
configurable: false // نمیتوان خصوصیت را حذف کرد
});
console.log(person.firstName); // Output: John
person.firstName = 'Jane';
console.log(person.firstName); // Output: John (چون خصوصیت writable نیست)
با استفاده از متد Object.defineProperties() میتوان چند خصوصیت را به طور همزمان تعریف و مدیریت کرد.
const person = {};
Object.defineProperties(person, {
firstName: {
value: 'John',
writable: true
},
lastName: {
value: 'Doe',
writable: true
}
});
console.log(person.firstName); // Output: John
console.log(person.lastName); // Output: Doe
جاوا اسکریپت دارای چندین متد داخلی است که به ما اجازه میدهد خصوصیات و متدهای اشیاء را مدیریت کنیم.
این متد آرایهای از کلیدهای (خصوصیات) شیء را برمیگرداند.
const person = { firstName: 'John', lastName: 'Doe' };
console.log(Object.keys(person)); // Output: ['firstName', 'lastName']
این متد آرایهای از مقادیر خصوصیات شیء را برمیگرداند.
console.log(Object.values(person)); // Output: ['John', 'Doe']
این متد آرایهای از جفتهای کلید-مقدار به عنوان آرایههای جداگانه برمیگرداند.
console.log(Object.entries(person)); // Output: [['firstName', 'John'], ['lastName', 'Doe']]
این متد یک یا چند شیء منبع را به یک شیء هدف کپی میکند.
const target = { a: 1 };
const source = { b: 2, c: 3 };
const returnedTarget = Object.assign(target, source);
console.log(returnedTarget); // Output: { a: 1, b: 2, c: 3 }
اشیاء در جاوا اسکریپت ابزارهای قدرتمندی برای مدیریت دادهها و تعریف رفتارهای مرتبط با آنها هستند. با یادگیری و استفاده از مفاهیم پیشرفته اشیاء، مانند خصوصیات و متدها، میتوانید برنامههای خود را بهتر سازماندهی کنید و کدهایی پویا و انعطافپذیر بنویسید. به طور خلاصه، درک عمیق از اشیاء به شما کمک میکند
نظری یافت نشد
مفاهیم Promise و چگونگی استفاده از آن در جاوا اسکریپت: راهنمای کامل همراه با مثالها
30م مهر 1403
مطالعه بیشتر
تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثالها
30م مهر 1403
مطالعه بیشتر
چگونه یک فوتر چسبان در CSS بسازیم: آموزش ساخت فوتر ثابت و همیشگی
2م شهریور 1403
مطالعه بیشتر
مقدمهای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on
28م شهریور 1402
مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیتدهی عناصر در صفحات وب
9م آبان 1403
مطالعه بیشتر
استفاده از display در CSS: تغییر نحوه نمایش عناصر - راهنمای جامع
9م آبان 1403
مطالعه بیشتر
آموزش اصول طراحی الگوهای برنامهنویسی (Design Patterns) در جاوا اسکریپت: راهنمای جامع با مثالها
4م آبان 1403
مطالعه بیشتر
آموزش تغییر نوع و اندازه فونت و رنگ متن با CSS: استایلدهی حرفهای به متنها
5م شهریور 1402
مطالعه بیشتر
آموزش کار با flex-grow، flex-shrink و flex-basis در CSS Flexbox: مدیریت اندازه و فضای عناصر
11م آبان 1403
مطالعه بیشتر
آموزش mix-blend-mode و background-blend-mode در CSS: ترکیب رنگها و ایجاد افکتهای جذاب
12م آبان 1403
مطالعه بیشتر
تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازهها
9م آبان 1403
مطالعه بیشتر
آموزش کار با رویدادهای فرم و اعتبارسنجی فرمها در جاوا اسکریپت: راهنمای جامع
3م آبان 1403
مطالعه بیشتر
تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد