1. מה זה אובייקט?
אובייקט הוא מבנה נתונים המאפשר לאחסן נתונים בצורה מאורגנת ומובנית. אובייקטים בנויים מזוגות של מפתחות (keys) ו-ערכים (values), כלומר, כל פריט במבנה האובייקט מיוצג על ידי שם (key
) וערך המתאים לאותו שם.
אובייקטים הם אחד ממבני הנתונים החשובים ביותר ב-JavaScript, והם מאפשרים לך לארגן את המידע בצורה נוחה וקלה לגישה.
2. איך נראה אובייקט?
אובייקט ב-JavaScript נוצר באמצעות סוגריים מסולסלים {}
, ומכיל זוגות של מפתחות וערכים מופרדים בפסיק. המפתח הוא מחרוזת או משתנה, והערך יכול להיות כל סוג של נתון – מספר, מחרוזת, בוליאני, פונקציה או אובייקט אחר.
דוגמה בסיסית:
let person = {
name: "Alice",
age: 30,
city: "New York"
};
הסבר:
name
,age
, ו-city
הם המפתחות של האובייקט."Alice"
,30
, ו-"New York"
הם הערכים המותאמים לאותם מפתחות.
3. גישה לערכים באובייקט
ישנן שתי דרכים עיקריות לגשת לערכים באובייקט:
- גישה באמצעות נקודה (
.
) - גישה באמצעות סוגריים מרובעים (
[]
)
גישה באמצעות נקודה:
let person = {
name: "Alice",
age: 30,
city: "New York"
};
console.log(person.name); // מציג "Alice"
console.log(person.age); // מציג 30
גישה באמצעות סוגריים מרובעים:
console.log(person["name"]); // מציג "Alice"
console.log(person["city"]); // מציג "New York"
הסבר:
- בגישה עם הנקודה, כותבים את שם המפתח מיד אחרי שם האובייקט.
- בגישה עם סוגריים מרובעים, שמים את שם המפתח בתוך סוגריים ומחרוזת.
4. הוספה ושינוי של ערכים באובייקט
אפשר להוסיף מפתחות חדשים לאובייקט או לשנות ערכים קיימים בקלות.
דוגמה להוספה:
let person = {
name: "Alice",
age: 30
};
person.city = "New York"; // הוספת מפתח חדש
console.log(person.city); // מציג "New York"
דוגמה לשינוי:
person.age = 31; // שינוי הערך הקיים
console.log(person.age); // מציג 31
הסבר:
- הוספת מפתח חדש מתבצעת כמו גישה רגילה לערך, ואם המפתח לא קיים, הוא מתווסף אוטומטית.
- שינוי ערך קיים נעשה על ידי השמה של ערך חדש למפתח.
5. מחיקת ערכים באובייקט
ניתן למחוק מפתח וערך באובייקט באמצעות המילה השמורה delete
.
דוגמה:
delete person.city; // מחיקת המפתח "city"
console.log(person.city); // מציג undefined
הסבר:
delete
מוחק את המפתח מהאובייקט. לאחר מכן, הגישה למפתח תחזירundefined
כי הוא כבר לא קיים.
6. לולאה על מפתחות אובייקט עם for...in
כדי לעבור על כל המפתחות של אובייקט, משתמשים בלולאת for...in
. הלולאה עוברת על כל המפתחות של האובייקט ומאפשרת לך לגשת לערכים שלהם.
דוגמה:
let person = {
name: "Alice",
age: 30,
city: "New York"
};
for (let key in person) {
console.log(key + ": " + person[key]);
}
הסבר:
- לולאת
for...in
עוברת על כל מפתח באובייקטperson
. - הפלט יהיה:
name: Alice
age: 30
city: New York
7. אובייקטים עם פונקציות (Methods)
אובייקטים יכולים להכיל גם פונקציות בתור ערכים. פונקציות בתוך אובייקט נקראות שיטות (Methods), והן יכולות לבצע פעולות על המידע באובייקט.
דוגמה:
let person = {
name: "Alice",
age: 30,
city: "New York",
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
person.greet(); // מציג "Hello, my name is Alice"
הסבר:
- השיטה
greet
היא פונקציה שמדפיסה הודעה המשלבת את שם האדם (this.name
מתייחס לאובייקט הנוכחי). this
משמשת לגישה למאפיינים של האובייקט מתוך הפונקציה.
8. בדיקה אם מפתח קיים באובייקט
ניתן לבדוק אם מפתח קיים באובייקט באמצעות האופרטור in
או הפונקציה hasOwnProperty
.
דוגמה עם in
:
console.log("age" in person); // true
console.log("salary" in person); // false
דוגמה עם hasOwnProperty
:
console.log(person.hasOwnProperty("city")); // true
console.log(person.hasOwnProperty("salary")); // false
הסבר:
in
בודק אם מפתח קיים באובייקט, גם אם הוא ירש אותו מאובייקט אחר.hasOwnProperty
בודק אם מפתח הוא חלק מהאובייקט עצמו, ולא הועבר בירושה.
9. אובייקטים בתוך אובייקטים (Nested Objects)
ניתן לאחסן אובייקטים בתוך אובייקטים אחרים, ובכך ליצור מבני נתונים מורכבים יותר.
דוגמה:
let person = {
name: "Alice",
age: 30,
address: {
street: "123 Main St",
city: "New York",
country: "USA"
}
};
console.log(person.address.city); // מציג "New York"
הסבר:
- האובייקט
address
הוא אובייקט מקונן בתוך האובייקטperson
. - ניתן לגשת לערכים באובייקט המקונן באמצעות הנקודה, כמו
person.address.city
.
10. שימוש ב-Object.keys()
ו-Object.values()
פונקציות אלו מאפשרות לקבל את כל המפתחות או הערכים באובייקט כמערך.
דוגמה ל-Object.keys()
:
let person = {
name: "Alice",
age: 30,
city: "New York"
};
let keys = Object.keys(person);
console.log(keys); // מציג ["name", "age", "city"]
דוגמה ל-Object.values()
:
let values = Object.values(person);
console.log(values); // מציג ["Alice", 30, "New York"]
הסבר:
Object.keys()
מחזירה מערך של כל המפתחות באובייקט.Object.values()
מחזירה מערך של כל הערכים באובייקט.
דוגמה מלאה: אובייקט עם שיטות ומבנים מקוננים
נבנה דוגמה שמדגימה אובייקט מורכב עם שיטה פנימית ומבנה מקונן:
let person = {
name: "Alice",
age: 30,
address: {
street: "123 Main St",
city: "New York",
country: "USA"
},
greet: function() {
console.log("Hello, my name is " + this.name + " and I live in " + this.address.city);
}
};
person.greet(); // מציג "Hello, my name is Alice and I live in New York"
הסבר:
- האובייקט מכיל גם מאפיינים בסיסיים (
name
,age
) וגם אובייקט מקונן (address
). - השיטה
greet
משלבת מידע ממאפיינים שונים כדי ליצור הודעה מורכבת. this.address.city
מאפשר גישה למאפיין מתוך האובייקט המקונן.
סיכום
בפרק זה למדנו על:
- איך ליצור אובייקטים ב-JavaScript ואיך לגשת לערכים שלהם.
- איך להוסיף, לשנות ולמחוק מפתחות באובייקטים.
- איך לעבור על מפתחות באובייקט בעזרת לולאת
for...in
. - יצירת פונקציות בתוך אובייקטים ושימוש ב-
this
כדי לגשת למאפיינים. - איך לבדוק אם מפתח קיים באובייקט.
- שימוש באובייקטים מקוננים ודרכים לגשת אליהם.
- שימוש ב-
Object.keys()
ו-Object.values()
כדי להפיק רשימות של מפתחות וערכים מאובייקט.
בפרק הבא נלמד על Functions (פונקציות) וכיצד לכתוב ולהשתמש בהן ב-JavaScript.