الكلمات المفتاحية get و set
جزء من قسم البرمجة كائنية التوجه في رحلة JavaScript على Coddy. الدرس 43 من 56.
المُ getters والمُ setters هي أساليب خاصة تبدو كأنها خصائص، لكنها في الواقع دوال. تمنحك التحكم في كيفية الوصول إلى الخصائص وتعديلها.
لننشئ صنفًا بسيطًا باسم Person:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// دالة الحصول على fullName
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// دالة تعيين fullName
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}الشرطة السفلية في _firstName و_lastName هي اصطلاح للتسمية: فهي تخبر المطورين الآخرين بأن هذه الخصائص داخلية، وينبغي قراءتها وتغييرها من خلال دالتي getter وsetter، لا مباشرةً. لا يفرض JavaScript ذلك.
يمكننا الآن استخدام دالتي getter وsetter هاتين مثل الخصائص:
// أنشئ كائنًا جديدًا من Person
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لاحظ أننا لا نستدعي هذه الأساليب باستخدام الأقواس. فهي تتصرف تمامًا مثل الخصائص، لكنها تنفّذ التعليمات البرمجية عند الوصول إليها أو تعديلها.
التحدي
لديك الفئة User التي تحتوي على الخاصية age. مهمتك هي إضافة دالتي getter وsetter للخاصية age بحيث:
- دالة Getter
get age(): تُعيد العمر المخزّن - دالة Setter
set age(newAge): تتحقق من أن العمر يتراوح بين 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 (دون تغيير)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
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الخصائص المحسوبةالتحقق من الصحة والآثار الجانبيةتحدي المراجعةتدرّب بنفسك: مترجم JavaScript عبر الإنترنت