JS- גישה לילדים של אובייקט
-
מה שמקובל זה:
var val = obj.x && obj.x.y;
אם הx לא קיים אז הval יחזיר null ולא יהיה שגיאה כי חלקו השני של המשפט לא יתבצע.
אם הוא קיים, אז בגלל ה&& מוחזר לval החלק האחרון.זה יכול להיות ארוך יותר:
var val = obj.x && obj.x.y && obj.x.y.z;
וזה לא אומר אם הx קיים או לא, זה סה"כ דרך לחלץ את הערך אם ישנו, ושלא תתרחש שגיאה אם הוא איננו.
בשביל לדעת אם קיים, אם אתה יודע שזה לא מגיע מפרוטוטייפ של אלמנט אחר תוכל לבדוק עם obj.hasOwnProperty.
בשביל לבדוק אם זה קיים גם מפרוטוטייפ, אפשר לבדוק אם x.o == undefined, או בES6 עם האופטור in ככה x in obj שזה מחזיר true אם קיים. -
@dovid אמר בJS- גישה לילדים של אובייקט:
@zvizvi בJS לדעתי חייבים לדעת להסתדר בלי ספריות חיצוניות כדי לא לפתח תלות. ואחרי שיודעים ורגילים להסתדר, על פי רוב לא צריכים שום ספריה.
זה נכון שחייבים לדעת להסתדר בלי ספריות חיצונית.
אבל אחרי שכבר יודעים להסתדר לדעתי עדיף לעבוד עם ספריות פופולאריות וציבוריות. משתי סיבות:- תמיד הן יעשו את הפעולה המבוקשת בדרך הכי יעילה. (וגם אם לא, מתישהו מישהו יעדכן אותן לעשות ככה).
- את הזמן שאתה רוצה להשקיע בכתיבת הפעולה המבוקשת - עדיף שתשקיע בדברים האחרים שאתה רוצה לפתח.