Return to Video

מתודות של אובייקטים - Object Methods (Video Version)

  • 0:01 - 0:06
    בפעם האחרונה, למדנו איך ליצור טיפוס אובייקט כדי לייצג את שני האובייקטים דמויי-ווינסטון שלנו
  • 0:06 - 0:09
    ואז לאתחל אותם עם בנאי (constructor).
  • 0:09 - 0:13
    טיפוס אובייקט לא חייב להיות מקושר רק עם מאפיינים.
  • 0:13 - 0:19
    הוא יכול להיות מקושר גם עם פונקציונליות. תחשבו על העולם וכל טיפוסי האובייקטים בעולם
  • 0:19 - 0:26
    כמונו, בני האדם. לכולנו יש גובה וגיל, אבל יש לנו גם דברים שאנחנו יכולים לעשות, כמו לישון, לאכול, ולתכנת.
  • 0:26 - 0:31
    ואנחנו רוצים להיות מסוגלים לקשר את הפונקציות האלו עם טיפוסי האובייקטים האלו.
  • 0:31 - 0:36
    בתוכנית הזאת, שהיא בדיוק כמו שהשארנו אותה בפעם שעברה, יש לנו את הפונקציה
  • 0:36 - 0:43
    drawWinston, שאנחנו יכולים לקרוא לה עם שני אובייקטי ווינסטון. אבל זה היה יותר נחמד אם היינו יכולים פשוט לחבר
  • 0:43 - 0:49
    את זה לטיפוס של אובייקט ווינסטון. אנחנו יכולים, וזה די קל לעשות זאת.
  • 0:49 - 0:56
    אז מתחת לבנאי, אנחנו נכתוב Winston - עם אות W גדולה - נקודה prototype,
  • 0:56 - 0:59
    אב הטיפוס (prototype), זאת מילה חדשה שכנראה לא ראיתם קודם.
  • 0:59 - 1:06
    אב הטיפוס הוא מאפיין של האובייקט שאנחנו יכולים לצרף לו פונקציות
  • 1:06 - 1:13
    וזה אומר שלכל אובייקט שהוא מופע של הטיפוס יהיו את הפונקציות האלו.
  • 1:13 - 1:20
    אז נוכל לרשום נקודה, prototype, ואז נקודה, ואז את שם הפונקציה, draw
  • 1:20 - 1:26
    ונרשום שווה, ואז נוכל לקחת את הקוד של פונקציית הציור שלנו ולשים אותו
  • 1:26 - 1:33
    כאן. אז מה שעשינו עכשיו, זה לחבר את פונקציית הציור
  • 1:33 - 1:40
    לאב הטיפוס של ווינסטון. וזה אומר שאנחנו אמורים להיות מסוגלים לקרוא ל-draw על כל אובייקט מסוג ווינסטון.
  • 1:40 - 1:45
    אז זה יהיה אפשרי לקרוא ל-draw על האובייקטים winstonTeen ו-winstonAdult.
  • 1:45 - 1:50
    וכשיש לנו פונקציה כזאת, שאנו יכולים לקרוא לה על אובייקט
  • 1:50 - 1:55
    אנו קוראים לזה "מתודה", אז מעתה אשתמש גם במילה "מתודה".
  • 1:55 - 1:58
    אז נאמר שזו "מתודת הציור". אוקיי.
  • 1:58 - 2:04
    אז עכשיו נמחק את כל זה, ונראה אם אנחנו יכולים לקרוא ל-draw?
  • 2:04 - 2:07
    winstonTeen.draw()
  • 2:07 - 2:14
    אוקיי. יש לנו שגיאה, ראינו אותה קופצת כאן, וכתוב: "winstObject is not defined" (האובייקט winstObject לא מוגדר).
  • 2:14 - 2:21
    אוקיי. קודם, היינו מעבירים את הפרמטר הזה, האובייקט ווינסטון, לפונקציה drawWinston
  • 2:21 - 2:26
    אבל עכשיו אנחנו לא מעבירים אותו יותר. אז אנחנו יכולים להעביר אותו
  • 2:26 - 2:31
    ומה אנחנו אמורים להעביר פה? נרצה להעביר את winstonTeen. אוקיי.
  • 2:31 - 2:38
    זה עבד, אבל זה גם נראה ממש טיפשי. אני כבר קוראת לפונקצית draw על האובייקט עצמו.
  • 2:38 - 2:44
    לא הגיוני שאצטרך להעביר את האובייקט כפרמטר בנוסף, זה נראה מיותר
  • 2:44 - 2:48
    זה נכון, אנחנו לא צריכים לעשות את זה, אז בואו נמחק את זה, ונחשוב רגע.
  • 2:48 - 2:54
    אם אנחנו בתוך האובייקט, במה נוכל להשתמש כדי לגשת למאפיינים של האובייקט?
  • 2:54 - 3:00
    אם תסתכלו על הבנאי (constructor) שלנו, תיזכרו במילה המיוחדת this
  • 3:00 - 3:09
    מה אם פשוט נשנה את מה שכתוב כאן, ל-"this"! נחליף את winstObject ב-this.
  • 3:09 - 3:13
    כי עכשיו אנחנו בתוך האובייקט. הפונקציה הזאת מופעלת
  • 3:13 - 3:17
    על האובייקט, כך ש-this יתייחס לאובייקט הנוכחי.
  • 3:17 - 3:23
    אז אנו יכולים פשוט לרשום this ולגשת לכל המאפיינים של האובייקט הנוכחי.
  • 3:23 - 3:27
    וזה עובד, רואים?
  • 3:27 - 3:32
    אנחנו כותבים winstonAdult.draw()
  • 3:32 - 3:38
    טה-דה! זה ניגש למאפיינים של winstonAdult כי זה האובייקט שעליו קוראים לפונקציה
  • 3:38 - 3:46
    זה מה שממש מגניב במילה this, אפילו שזה יכול להיות קצת מבלבל לפעמים.
  • 3:46 - 3:52
    אוקיי, זה היה ממש כיף, אז בואו נוסיף עוד מתודה. מה עוד אפשר שווינסטון יעשה?
  • 3:52 - 4:01
    אולי נגרום לו לדבר. ניצור את Winston.prototype.talk. אנחנו יכולים לחבר כמה מתודות שנרצה לאב הטיפוס.
  • 4:01 - 4:05
    נכתוב: "I'm Winston!" (אני ווינסטון)
  • 4:05 - 4:13
    ואז נרשום כאן this.x+20 ו-this.y+150.
  • 4:13 - 4:20
    וכמובן, לא קרה שום דבר, כי לא קראנו עדיין לפונקיה הזו.
  • 4:20 - 4:25
    אז בואו נגרום לו לדבר. winstonTeen.talk()
  • 4:25 - 4:30
    והופיעו המילים "אני ווינסטון"! ואם נקרא גם ל-winstonAdult.talk()
  • 4:30 - 4:37
    טה-דה! אוקיי, עכשיו יש לנו טיפוס אובייקט Winston שיש לו מאפיינים: כינוי, גיל, מיקום X, מיקום Y
  • 4:37 - 4:45
    ויש לו גם פונקציונליות - התנהגויות, מתודות - שמתנהגות בצורה שונה בתלות במאפיינים
  • 4:45 - 4:51
    ואנחנו יכולים ליצור כמה מופעים שנרצה של Winston ולקרוא לכל המתודות האלו.
  • 4:51 - 4:54
    מגניב, לא?
Title:
מתודות של אובייקטים - Object Methods (Video Version)
Description:

זהו פשוט צילום מסך של שיעור הקוד האינטראקטיבי שלנו, שהוכן כדי להקל על הכנת כתוביות ותרגום. עדיף לצפות בשיעורים שלנו בכתובת:
https://www.khanacademy.org/cs/programming/

This is just a screen grab of our interactive coding talk-through, prepared to make captioning and translation easier. It is better to watch our talk-throughs here:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
04:54

Hebrew subtitles

Revisions