الكلمات المفتاحية 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): قم بتخزينه في
ورقة مرجعية
تُعد دوال الجلب (Getters) ودوال التعيين (Setters) طرقاً خاصة تبدو مثل الخصائص ولكنها تنفذ كوداً برمجياً عند الوصول إليها أو تعديلها.
دالة الجلب (Getter) - استخدم الكلمة المفتاحية get لتعريف دالة تُرجع قيمة:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
}دالة التعيين (Setter) - استخدم الكلمة المفتاحية set لتعريف دالة تقبل قيمة:
class Person {
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}الاستخدام - يتم الوصول إلى دوال الجلب والتعيين مثل الخصائص (بدون أقواس):
const person = new Person('John', 'Doe');
// Using getter
console.log(person.fullName); // John Doe
// Using setter
person.fullName = 'Jane Smith';
console.log(person.fullName); // Jane Smithجرّب بنفسك
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 والتصديروراثة فئة Circle9الخصائص والدوال الثابتة (Static)
مستوى الكلاس مقابل مستوى الكائنالخصائص الثابتة (Static Properties)دوال المساعدة الثابتة (Static Utility Methods)تحدي المراجعة12Getters و Setters
الكلمات المفتاحية get و setالخصائص المحسوبةالتحقق من الصحة والآثار الجانبيةتحدي المراجعة