Menu
Coddy logo textTech

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

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

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

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

עכשיו נוכל להשתמש במאפייני הגישה וההגדרה האלה כמו במאפיינים:

// צרו 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 <strong>get age()</strong>: מחזיר את הגיל המאוחסן
  2. Setter <strong>set age(newAge)</strong>: מוודא שהגיל הוא בין 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 אונליין