מילות המפתח 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];
}
}הקו התחתון ב-_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שימו לב שאנחנו לא קוראים למתודות האלה עם סוגריים. הן מתנהגות בדיוק כמו מאפיינים, אבל מריצות קוד כשניגשים אליהן או משנים אותן.
אתגר
ניתנה לך המחלקה User עם המאפיין age. המשימה שלך היא להוסיף getter ו-setter עבור age כך ש:
- Getter
<strong>get age()</strong>: מחזיר את הגיל המאוחסן - Setter
<strong>set age(newAge)</strong>: מוודא שהגיל הוא בין 0 ל-120- אם הוא תקין (0-120): מאחסן אותו ב-
this._age - אם הוא לא תקין: לא משנה אותו ומדפיס
"Invalid age!"
- אם הוא תקין (0-120): מאחסן אותו ב-
נסו בעצמכם
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 (ללא שינוי)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין