الكلمات المفتاحية get و set
جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy — الدرس 43 من 56.
تعد الـ Getters والـ setters طرقاً خاصة تبدو مثل الخصائص ولكنها في الواقع دوال. فهي تمنحك تحكماً في كيفية الوصول إلى الخصائص وتعديلها.
لنقم بإنشاء فئة Person بسيطة:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// دالة جلب (Getter) لـ fullName
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// دالة تعيين (Setter) لـ fullName
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}الآن يمكننا استخدام الـ getters والـ setters كخصائص:
// إنشاء شخص جديد
const person = new Person('John', 'Doe');
// استخدام الـ getter
console.log(person.fullName); // المخرجات: John Doe
// استخدام الـ setter
person.fullName = 'Jane Smith';
// قامت دالة التعيين (setter) بتحديث الخصائص الداخلية
console.log(person.fullName); // المخرجات: Jane Smithلاحظ أننا لا نستدعي هذه الـ methods باستخدام الأقواس. فهي تتصرف تماماً مثل الخصائص (properties) ولكنها تنفذ كوداً برمجياً عند الوصول إليها أو تعديلها.
التحدي
لقد تم تزويدك بفئة User تحتوي على خاصية age. مهمتك هي إضافة getter و setter لـ age يقومان بما يلي:
- الـ Getter
<strong>get age()</strong>: يقوم بإرجاع العمر المخزن. - الـ Setter
<strong>set age(newAge)</strong>: يتحقق من أن العمر يقع بين 0 و 120- إذا كان صالحاً (0-120): قم بتخزينه في
this._age - إذا كان غير صالح: لا تقم بتغييره وقم بطباعة
"Invalid age!"في السجل.
- إذا كان صالحاً (0-120): قم بتخزينه في
جرّب بنفسك
import { User } from './user.js';
// كود الاختبار - لا تعدله
const user = new User("Alice", 25);
console.log(user.age); // يجب أن تكون النتيجة 25
user.age = 30;
console.log(user.age); // يجب أن تكون النتيجة 30
user.age = 150; // "Invalid age!" يجب أن يظهر
console.log(user.age); // (بدون تغيير) 30 يجب أن تظل النتيجة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1الكائنات والكلمة المفتاحية this
مراجعة سريعة: الكائناتإضافة Methods إلى الكائناتفهم الكلمة المفتاحية thisConstructor Functionsالكلمة المفتاحية newتحدي المراجعة7الوراثة والكلمة المفتاحية extends
الوراثةعلاقة "is-a"الكلمة المفتاحية extendsالدالة super()وراثة الخصائص والوظائفتحدي المراجعة2تنظيم الكود
ما هي الـ Modules؟التصدير باستخدام exportالاستيراد باستخدام importالـ Default مقابل الـ Named Exports8تنظيم كود OOP
تنظيم الـ Classes في Modules11مشروع: مصيّر الأشكال
إعداد: فئة Shape والتصديروراثة فئة Circleإعادة التعريف ودالة المساحةعداد الأشكال Static9الخصائص والدوال الثابتة (Static)
مستوى الكلاس مقابل مستوى الكائنالخصائص الثابتة (Static Properties)دوال المساعدة الثابتة (Static Utility Methods)تحدي المراجعة12Getters و Setters
الكلمات المفتاحية get و setالخصائص المحسوبةالتحقق من الصحة والآثار الجانبيةتحدي المراجعة