Menu
CoddyTech

الكلمات المفتاحية 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

لاحظ أننا لا نستدعي هذه الأساليب باستخدام الأقواس. فهي تتصرف تمامًا مثل الخصائص، لكنها تنفّذ التعليمات البرمجية عند الوصول إليها أو تعديلها.

challenge icon

التحدي

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

  1. دالة Getter get age(): تُعيد العمر المخزّن
  2. دالة Setter set age(newAge): تتحقق من أن العمر يتراوح بين 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اختبر نفسك

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

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت