Menu
Coddy logo textTech

ולידציה ותופעות לוואי

חלק מהיחידה תכנות מונחה עצמים במסלול ה-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);

// בדיקה 2: Invalid balance (שלילי)
account.balance = -50;
console.log(account.balance);

// בדיקה 3: Invalid balance (לא מספר)
account.balance = "abc";
console.log(account.balance);

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר JavaScript אונליין