Menu
CoddyTech

מילות המפתח get ו-set

חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 43 מתוך 56.

פעולות getter ו-setter הן מתודות מיוחדות שנראות כמו מאפיינים, אך למעשה הן פונקציות. הן מעניקות לך שליטה על אופן הגישה למאפיינים ועל אופן השינוי שלהם.

בואו ניצור מחלקה פשוטה 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 אונליין