הגדרת מתודה של אובייקט ב-JS
תכנות
4
פוסטים
3
כותבים
359
צפיות
2
עוקבים
-
נתקלתי בקוד המוזר הזה היום:
let o = { async function () { // do stuff } }
איזה שדה יש בתוך אובייקט
o
? איך קוראים לפונקציה הלכאורה אנונימית הזו?@yossiz
השאלה שלך היא איך אתה מגיע לפונקצייה?
אם כן אז:o.function()
-
@ivrtikshoret לא, לא הייתה פה שאלה מעשית.
זה יותר שיתוף במשהו פלאי בצורת חידה, ואם לקרוא לזה שאלה אז היא למה ואיך זה עובד.@dovid כתב בהגדרת מתודה של אובייקט ב-JS:
לא הייתה פה שאלה מעשית
אכן
הקוד הזה בלבל אותי לכמה דקות טובות
בניגוד למושכל הראשון שלי (ומן הסתם בניגוד לכוונת המתכנת שכתב את זה), המילהfunction
בקוד הזה הוא לא מילת מפתח אלא שם של שדה.אגב, בעוד שאני עובד על הבנת הקוד ראיתי דבר שלא ידעתי מקודם:
יש שני הבדלים ב-JS בין פונקציה למתודהפונקציה
let x = { foo: function() {} }
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה:
new x.foo
- לא יכול להשתמש במילת המפתח
super
מתודה
let x = { foo() {} }
- לא יכול להיות בנאי, הקוד:
new x.foo
יזרוק שגיאה - יכול להשתמש במילת המפתח
super
כדי לציין את הפרוטוטייפ שלו. האיגוד שלsuper
לפורטוטייפ הוא סטטי וזה לא משתנה לפי צורת הקריאה של הפונקציה, בניגוד לאיגוד שלthis
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה: