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

التحقق من الصحة والآثار الجانبية

جزء من قسم البرمجة كائنية التوجه في رحلة JavaScript على Coddy. الدرس 45 من 56.

يمكن لأساليب getter وsetter أن تفعل أكثر من مجرد قراءة الخصائص وكتابتها - إذ يمكنها التحقق من صحة المدخلات وتفعيل التأثيرات الجانبية عند تغيّر القيم.

لننشئ فئة User مع التحقّق:

class User {
  constructor(name, age) {
    this._name = name;
    this._age = age;
  }
  
  get age() {
    return this._age;
  }
  
  set age(value) {
    // تحقق من أن العمر رقم وضمن نطاق معقول
    if (typeof value !== 'number') {
      throw new Error('Age must be a number');
    }
    
    if (value < 0 || value > 120) {
      throw new Error('Age must be between 0 and 120');
    }
    
    this._age = value;
    
    // تأثير جانبي: سجّل عند تغيّر العمر
    console.log(`Age updated to ${value}`);
  }
}

الآن، when نستخدم setter، تحدث validation تلقائيًا:

const user = new User('Alice', 25);

// هذا يعمل
user.age = 30;  // يسجل: "Age updated to 30"

// هذا يرمي خطأ
user.age = -5;  // خطأ: يجب أن يكون العمر بين 0 و 120

// هذا أيضاً يرمي خطأ
user.age = "thirty";  // خطأ: يجب أن يكون العمر رقماً

Validation = التحقق مما إذا كانت قيمة ما صالحة قبل تخزينها
الآثار الجانبية = إجراءات إضافية تحدث عندما تتغير خاصية

challenge icon

التحدي

لديك فئة BankAccount مع setter أساسي. مهمتك هي إكمال setter الخاص بـ balance.

أضف إلى setter:

  1. Validation: تحقّق مما إذا كانت value ليست number أو كانت أقل من 0 - وإذا كان الأمر كذلك، استخدم console.log("Invalid balance") ثم استخدم return للخروج من setter
  2. Side Effect: بعد تخزين قيمة صالحة، استخدم console.log(\`Balance updated to $${value}\`)

جرّب بنفسك

import { BankAccount } from './account.js';

// حالات الاختبار
const account = new BankAccount("Savings");

// Test 1: Valid balance
account.balance = 100;
console.log(account.balance);

// Test 2: Invalid balance (negative)
account.balance = -50;
console.log(account.balance);

// Test 3: Invalid balance (not a number)
account.balance = "abc";
console.log(account.balance);

quiz iconاختبر نفسك

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

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

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