لماذا نضيف خصائص إلى النموذج؟
حتى الآن كانت النماذج التي أنشأناها بسيطة جدًا، ولم تكن تحتوي إلا على كود يُنفذ داخل الـ Constructor.
لكن في التطبيقات الحقيقية، نحتاج إلى إنشاء نماذج تحتوي على بيانات مختلفة.
على سبيل المثال، إذا أردنا إنشاء نموذج لسيارة، فمن الطبيعي أن تحتوي كل سيارة على معلومات مثل:
- اللون.
- سنة الصنع.
- الشركة المصنعة.
- السرعة.
هذه البيانات تُسمى خصائص (Attributes) أو Properties.
إضافة خصائص إلى النموذج
لنُعدّل نموذج السيارة بحيث يستقبل لون السيارة وسنة صنعها.
class Car { constructor(color, model) { this.color = color; this.model = model; }}
const car = new Car("Blue", 2020);
console.log(car.color);console.log(car.model);كيف يستقبل الـ Constructor البيانات؟
لاحظ أن الـ Constructor يحتوي على الأقواس التالية:
constructor(color, model);القيم الموجودة داخل الأقواس تُسمى Parameters، وهي البيانات التي يتوقع الـ Constructor استقبالها عند إنشاء كائن جديد.
لذلك، عند إنشاء الكائن، يجب تمرير هذه القيم:
const car = new Car("Blue", 2020);في هذا المثال:
"Blue"أصبحت قيمةcolor.2020أصبحت قيمةmodel.
ما معنى this؟
قد تبدو الكلمة this غريبة في البداية، لكنها من أهم المفاهيم في البرمجة كائنية التوجه.
عندما نكتب:
this.color = color;فإننا نقول:
this.colorهي خاصية موجودة داخل الكائن الذي نقوم بإنشائه.- أما
colorفهي القيمة التي استقبلها الـ Constructor.
بمعنى آخر، نحن نأخذ القيمة القادمة من الخارج ونخزنها داخل الكائن.
وينطبق الأمر نفسه على:
this.model = model;ما وظيفة النقطة (.)؟
ربما لاحظت أننا نستخدم النقطة (.) كثيرًا في JavaScript.
النقطة تعني ببساطة:
الوصول إلى شيء موجود داخل شيء آخر.
على سبيل المثال:
console.log("Hello");هنا:
consoleهو كائن.logهي دالة موجودة داخل هذا الكائن.
ولذلك نكتب:
console.log();والأمر نفسه مع الكائن الذي أنشأناه:
car.color;فنحن نصل إلى الخاصية color الموجودة داخل الكائن car.
وبالمثل:
car.model;نصل إلى خاصية model.
ماذا يجب أن تتذكر؟
- Attributes هي البيانات التي يملكها الكائن.
- يستقبل الـ Constructor القيم من خلال Parameters.
- تستخدم
thisلحفظ هذه القيم داخل الكائن. - النقطة (
.) تُستخدم للوصول إلى الخصائص أو الدوال الموجودة داخل كائن. - يمكن الوصول إلى أي خاصية باستخدام الصيغة
object.property.