הגדרת מתודה של אובייקט ב-JS
-
@dovid כתב בהגדרת מתודה של אובייקט ב-JS:
לא הייתה פה שאלה מעשית
אכן
הקוד הזה בלבל אותי לכמה דקות טובות
בניגוד למושכל הראשון שלי (ומן הסתם בניגוד לכוונת המתכנת שכתב את זה), המילהfunction
בקוד הזה הוא לא מילת מפתח אלא שם של שדה.אגב, בעוד שאני עובד על הבנת הקוד ראיתי דבר שלא ידעתי מקודם:
יש שני הבדלים ב-JS בין פונקציה למתודהפונקציה
let x = { foo: function() {} }
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה:
new x.foo
- לא יכול להשתמש במילת המפתח
super
מתודה
let x = { foo() {} }
- לא יכול להיות בנאי, הקוד:
new x.foo
יזרוק שגיאה - יכול להשתמש במילת המפתח
super
כדי לציין את הפרוטוטייפ שלו. האיגוד שלsuper
לפורטוטייפ הוא סטטי וזה לא משתנה לפי צורת הקריאה של הפונקציה, בניגוד לאיגוד שלthis
- יכול להיות constructor. כלומר, הקוד הזה לא יזרוק שגיאה: