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!" في السجل.

ورقة مرجعية

تُعد دوال الجلب (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 يجب أن تظل النتيجة

quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming