Menu
CoddyTech
flag Ar iconالعربيةdown icon

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

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

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

لننشئ فئة 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}`);
  }
}

الآن عند استخدام دالة التعيين، يحدث التحقق تلقائيًا:

const user = new User('Alice', 25);
// هذا يعمل
user.age = 30;  // يسجّل: "Age updated to 30"
// هذا يرمي خطأ
user.age = -5;  // خطأ: يجب أن يكون العمر بين 0 و 120
// هذا أيضاً يرمي خطأ
user.age = "thirty";  // خطأ: يجب أن يكون العمر رقماً

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

challenge icon

التحدي

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

أضف إلى setter ما يلي:

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

تنسيق الإخراج المطلوب:

جرّب بنفسك

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

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

// اختبار 1: رصيد صالح
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 عبر الإنترنت