שאלה באובייקטים ב JS
-
יש לי אובייקט X
אני רוצה להציב בתוך הבן שלו, Y את הנכד - Z.
אם אני אעשה כך:x.y.z={}
תיווצר בעיה.
איני יודע אם Y הוא undefined. ואם כן אני צריך קודם לעשותY={}
. ואז אני אדרוס את הבנים של Y אם ישנם.
הפתרון הנאיבי הוא לעשות בדיקה.
אם x.y הוא undefined, אז x.y = {}.
השאלה היא אם יש משהו קצר יותר. כי אם אני רוצה לגשת לבן של הבן של הבן אני כבר מסתבך. -
הדרך המקובלת היא כמו שכתבתי לך בעבר:
http://tchumim.com/topic/2989/js-גישה-לילדים-של-אובייקט/3
רק שכנראה אתה שואל איך משתמשים בזה להשמה, אז ככה:x.y = x.y || {}; x.y.z = {};
בטריקיות זה יכול להיכנס בשורה אחת:
(x.y = x.y || {}).z = {};
זה מרגיז אבל אין מה לעשות. בדרך כלל בתכנון נכון לא מגיעים למצב הזה בתדירות גבוהה.
ואני מסכים עם דברי @zvizvi שם שהכי טוב להשתמש בספריה כמו שהוא הדגים שמה. -
@dovid אמר בשאלה באובייקטים ב JS:
הדרך המקובלת היא כמו שכתבתי לך בעבר:
http://tchumim.com/topic/2989/js-גישה-לילדים-של-אובייקט/3
רק שכנראה אתה שואל איך משתמשים בזה להשמה, אז ככה:x.y = x.y || {}; x.y.z = {};
בטריקיות זה יכול להיכנס בשורה אחת:
(x.y = x.y || {}).z = {};
זה מרגיז אבל אין מה לעשות. בדרך כלל בתכנון נכון לא מגיעים למצב הזה בתדירות גבוהה.
ואני מסכים עם דברי @zvizvi שם שהכי טוב להשתמש בספריה כמו שהוא הדגים שמה.בהמשך לשם, בLodash עושים את זה ככה:
_.set( x, 'y.z', {} );