מה זה הסינטקסט בJS שתוחמים חלק מהארגומנטים כאוביקט?
-
ככה:
postparse(postparsed, { getTraits, postparse }) {
-
לא כ"כ הבנתי את השאלה. לא תוחמים כמה ארגומנטים, אלא זה ארגומנט בודד, שהוא אובייקט עם כמה מאפיינים.
למשל פונקציית לוג, יכולה לקבל אובייקט:var person = { name: "dovid", site: "tchumim"}; console.log(person );
באותה מידה אפשר ליצור את האובייקט ישר בפונקציה:
console.log({ name: "dovid", site: "tchumim"});
-
אני לא הסתכלתי בקוד המקור, וממילא חשבתי ששאלתך (לפי הקוד שהיה בא)
נסובה על "פרמטרים אקטואליים" - שעת הקריאה, כעת פתחתי את הלינק שנתת ומדובר ב"פרמטרים פורמליים" שזה ההצהרה על הפונקציה.
זה באמת פיצר חדש של ES6 שנקרא Destructuring assignmentאם למשל יש לך אובייקט כזה:
var person = { name: "dovid", site: "tchumim"};
ונניח יש לו עוד שלוש מאות מאפיינים לא רלוונטיים לך, ואתה רוצה כעת להוציא ממנו את המאפיין site שייוצא לקונטקסט הנוכחי (this.site).
אז אתה יכול לכתוב ככה:({site} = person); console.log(site);
כעת אפשר לעשות אותו דבר בפונקציות, נניח יש לך כזו פונקציה:
function getTitleAndAddress(win){ console.log(win.document.title + ": " + win.location); }
אז אפשר לחלץ מתוך הארגומנט את המאפיינים החשובים והם עוברים ישר לthis הנוכחי:
function getTitleAndAddress({document, location}){ console.log(document.title + ": " + location); }
-
@מנצפך אמר במה זה הסינטקסט בJS שתחומים חלק מהארגומנטים כאוביקט?:
@dovid אתה יכול להביא דוגמא למה זה טוב?
זה דבר ראשון עניין של נוחות.
הרבה פעמים אתה מצפה לקבל אובייקט מורכב ואתה צריך רק משהו ממנו, אז אתה משתמש בשורה נוספת בה אתה מציב במשתנה שוב רק את החלק הרלוונטי.
למשל בחזרה מפונקציה וכדומה:const { src, width} = document.images[0]
כמו"כ בהזדמנות זו אתה לפעמים בוחר בשם קצר יותר ומתאים יותר מהשם המקורי.
ישנה עוד מוטיבציה לפרק אובייקטים כי זה חוסך להחזיק את האובייקט המקורי, למשל כשאתה מקבל אובייקט גדול ויקר מבחינת זיכרון, ואתה רוצה ליצור עותק של הרלוונטי ושכל השאר ינוקה.
-
@dovid אמר במה זה הסינטקסט בJS שתחומים חלק מהארגומנטים כאוביקט?:
אם למשל יש לך אובייקט כזה:
var person = { name: "dovid", site: "tchumim"};
ונניח יש לו עוד שלוש מאות מאפיינים לא רלוונטיים לך, ואתה רוצה כעת להוציא ממנו את המאפיין site שייוצא לקונטקסט הנוכחי (this.site).
אז אתה יכול לכתוב ככה:({site} = person); console.log(site);
במקרה הזה, מה site מחזיק?
את person.site?
ואם אני רוצה לקרוא לו בשם אחר מאשר site?