🧠 Object Methods: كيف تجعل كائناتك "تفعل" شيئاً؟ 🚀
مرحباً بك في درس جديد! حتى الآن، تعلمنا أن الكائن (Object) في جافا سكريبت هو مجموعة من الخصائص (Properties) التي تخزن بيانات، مثل name أو age. لكن ماذا لو أردنا أن يقوم الكائن بإجراء أو حساب ما؟ هنا يأتي دور Object Methods أو دوال الكائنات! 🛠️
ببساطة، Method هي مجرد دالة (Function)، لكنها مخزَّنة كخاصية داخل كائن. هذه الدالة تمنح الكائن "سلوكاً" أو "قدرة" على تنفيذ مهمة محددة متعلقة به.
📝 بناء الجملة: كيف نعرف Method داخل كائن؟
هناك طريقتان رئيسيتان لتعريف Method داخل كائن:
الطريقة الأولى: تعريف الدالة مباشرة داخل الكائن
هذه هي الطريقة الأكثر شيوعاً ووضوحاً للمبتدئين.
const person = {
firstName: "Ahmed",
lastName: "Ali",
age: 25,
// هنا نعرّف الـ Method
getFullName: function() {
return this.firstName + " " + this.lastName;
}
};
في المثال أعلاه:
getFullNameهو اسم الخاصية التي تخزن الدالة.function() { ... }هي قيمة هذه الخاصية، وهي الدالة نفسها.thisكلمة خاصة تشير إلى الكائن الحالي الذي يملك هذه الدالة (سنتعمق فيها لاحقاً).
الطريقة الثانية: الصيغة المختصرة (ES6)
مع إصدارات جافا سكريبت الحديثة، يمكننا كتابة Method بطريقة أكثر اختصاراً وحدة.
const person = {
firstName: "Ahmed",
lastName: "Ali",
age: 25,
// الطريقة المختصرة: نحذف الكلمة function وعلامة النقطتين :
getFullName() {
return this.firstName + " " + this.lastName;
}
};
كلتا الطريقتين صحيحتان وتؤديان نفس المهمة! ✅ الصيغة المختصرة هي الأكثر استخداماً حديثاً.
📞 كيف نستدعي Method؟ (استخدام دوال الكائنات)
لاستدعاء Method وتنفيذ الكود الموجود بداخله، نستخدم النقطة (Dot Notation) تماماً كما نفعل للوصول إلى خاصية عادية، لكن نضيف أقواس الاستدعاء () في النهاية.
const person = {
firstName: "Sarah",
lastName: "Mohamed",
// تعريف method للترحيب
sayHello() {
console.log("Hello! I'm happy to meet you.");
}
};
// استدعاء الـ method
person.sayHello(); // الناتج في الكونسول: "مرحباً! أنا سعيدة بلقائك."
ملاحظة مهمة: إذا نسيَت كتابة الأقواس ()، فأنت تشير إلى الدالة نفسها ككائن، وليس نتيجتها، ولن يتم تنفيذ الكود الموجود بداخلها.
🔑 فهم الكلمة الأساسية this داخل الـ Method
الكلمة this هي قلب مفهوم Object Methods. داخل أي Method، تشير this إلى الكائن الذي يملك هذه الدالة والذي من خلاله تم استدعاؤها.
const car = {
brand: "Toyota",
model: "Camry",
year: 2022,
// method uses this to access the properties of the same object
getCarInfo() {
// this.brand means: the property brand in this object (car)
return `This car is ${this.brand} ${this.model} model ${this.year}`;
}
};
console.log(car.getCarInfo());
// الناتج: "This car is Toyota Camry model 2022"
بدون this، لن تتمكن الدالة من معرفة أي brand أو model نقصد! إنها تربط الدالة بالكائن الذي تنتمي إليه.
💡 أمثلة عملية واقعية
لنرى كيف يمكن للـ Methods أن تجعل كودنا أكثر واقعية وتنظيماً.
المثال 1: كائن حساب بنكي
const bankAccount = {
owner: "Khaled",
balance: 1000,
// method للإيداع
deposit(amount) {
this.balance = this.balance + amount;
console.log(`تم إيداع ${amount}. الرصيد الحالي: ${this.balance}`);
},
// method للسحب
withdraw(amount) {
if (amount <= this.balance) {
this.balance = this.balance - amount;
console.log(`تم سحب ${amount}. الرصيد الحالي: ${this.balance}`);
} else {
console.log("رصيدك غير كافي للسحب!");
}
}
};
// استخدام الـ methods
bankAccount.deposit(500); // تم إيداع 500. الرصيد الحالي: 1500
bankAccount.withdraw(200); // تم سحب 200. الرصيد الحالي: 1300
bankAccount.withdraw(1500);// رصيدك غير كافي للسحب!
المثال 2: كائن آلة حاسبة بسيطة
const calculator = {
add(a, b) {
return a + b;
},
subtract(a, b) {
return a - b;
},
multiply(a, b) {
return a * b;
}
};
console.log( calculator.add(5, 3) ); // 8
console.log( calculator.subtract(10, 4) ); // 6
console.log( calculator.multiply(3, 7) ); // 21
🎯 ملخص الدرس
- Object Method هي دالة مخزنة كخاصية داخل كائن.
- نستطيع تعريفها بطريقتين:
methodName: function() {...}أو بالصيغة المختصرةmethodName() {...}. - لاستدعاء Method نستخدم
objectName.methodName(). - الكلمة الأساسية
thisداخل Method تشير إلى الكائن نفسه الذي يملكها، مما يسمح للدالة بالوصول إلى خصائصه الأخرى. - الـ Methods تمنح الكائنات سلوكاً وتجعل الكود أكثر تنظيماً وواقعية.
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال