Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الكلمات المفتاحية 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) ولكنها تنفذ كوداً برمجياً عند الوصول إليها أو تعديلها.

challenge icon

التحدي

لقد تم تزويدك بفئة User تحتوي على خاصية age. مهمتك هي إضافة getter و setter لـ age يقومان بما يلي:

  1. الـ Getter <strong>get age()</strong>: يقوم بإرجاع العمر المخزن.
  2. الـ Setter <strong>set age(newAge)</strong>: يتحقق من أن العمر يقع بين 0 و 120
    • إذا كان صالحاً (0-120): قم بتخزينه في this._age
    • إذا كان غير صالح: لا تقم بتغييره وقم بطباعة "Invalid age!" في السجل.

جرّب بنفسك

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 يجب أن تظل النتيجة

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming