1 00:00:00,780 --> 00:00:06,234 בפעם האחרונה, למדנו איך ליצור טיפוס אובייקט כדי לייצג את שני האובייקטים דמויי-ווינסטון שלנו 2 00:00:06,234 --> 00:00:09,234 ואז לאתחל אותם עם בנאי (constructor). 3 00:00:09,234 --> 00:00:13,472 טיפוס אובייקט לא חייב להיות מקושר רק עם מאפיינים. 4 00:00:13,472 --> 00:00:18,806 הוא יכול להיות מקושר גם עם פונקציונליות. תחשבו על העולם וכל טיפוסי האובייקטים בעולם 5 00:00:18,806 --> 00:00:26,287 כמונו, בני האדם. לכולנו יש גובה וגיל, אבל יש לנו גם דברים שאנחנו יכולים לעשות, כמו לישון, לאכול, ולתכנת. 6 00:00:26,287 --> 00:00:30,939 ואנחנו רוצים להיות מסוגלים לקשר את הפונקציות האלו עם טיפוסי האובייקטים האלו. 7 00:00:30,939 --> 00:00:35,949 בתוכנית הזאת, שהיא בדיוק כמו שהשארנו אותה בפעם שעברה, יש לנו את הפונקציה 8 00:00:35,949 --> 00:00:43,066 drawWinston, שאנחנו יכולים לקרוא לה עם שני אובייקטי ווינסטון. אבל זה היה יותר נחמד אם היינו יכולים פשוט לחבר 9 00:00:43,066 --> 00:00:48,569 את זה לטיפוס של אובייקט ווינסטון. אנחנו יכולים, וזה די קל לעשות זאת. 10 00:00:48,569 --> 00:00:55,725 אז מתחת לבנאי, אנחנו נכתוב Winston - עם אות W גדולה - נקודה prototype, 11 00:00:55,725 --> 00:00:59,232 אב הטיפוס (prototype), זאת מילה חדשה שכנראה לא ראיתם קודם. 12 00:00:59,232 --> 00:01:05,881 אב הטיפוס הוא מאפיין של האובייקט שאנחנו יכולים לצרף לו פונקציות 13 00:01:05,881 --> 00:01:13,309 וזה אומר שלכל אובייקט שהוא מופע של הטיפוס יהיו את הפונקציות האלו. 14 00:01:13,309 --> 00:01:19,612 אז נוכל לרשום נקודה, prototype, ואז נקודה, ואז את שם הפונקציה, draw 15 00:01:19,612 --> 00:01:25,606 ונרשום שווה, ואז נוכל לקחת את הקוד של פונקציית הציור שלנו ולשים אותו 16 00:01:25,606 --> 00:01:32,951 כאן. אז מה שעשינו עכשיו, זה לחבר את פונקציית הציור 17 00:01:32,951 --> 00:01:40,008 לאב הטיפוס של ווינסטון. וזה אומר שאנחנו אמורים להיות מסוגלים לקרוא ל-draw על כל אובייקט מסוג ווינסטון. 18 00:01:40,008 --> 00:01:45,411 אז זה יהיה אפשרי לקרוא ל-draw על האובייקטים winstonTeen ו-winstonAdult. 19 00:01:45,411 --> 00:01:49,569 וכשיש לנו פונקציה כזאת, שאנו יכולים לקרוא לה על אובייקט 20 00:01:49,569 --> 00:01:54,833 אנו קוראים לזה "מתודה", אז מעתה אשתמש גם במילה "מתודה". 21 00:01:54,833 --> 00:01:58,272 אז נאמר שזו "מתודת הציור". אוקיי. 22 00:01:58,272 --> 00:02:04,103 אז עכשיו נמחק את כל זה, ונראה אם אנחנו יכולים לקרוא ל-draw? 23 00:02:04,103 --> 00:02:07,069 winstonTeen.draw() 24 00:02:07,069 --> 00:02:13,697 אוקיי. יש לנו שגיאה, ראינו אותה קופצת כאן, וכתוב: "winstObject is not defined" (האובייקט winstObject לא מוגדר). 25 00:02:13,697 --> 00:02:20,530 אוקיי. קודם, היינו מעבירים את הפרמטר הזה, האובייקט ווינסטון, לפונקציה drawWinston 26 00:02:20,530 --> 00:02:26,462 אבל עכשיו אנחנו לא מעבירים אותו יותר. אז אנחנו יכולים להעביר אותו 27 00:02:26,462 --> 00:02:30,819 ומה אנחנו אמורים להעביר פה? נרצה להעביר את winstonTeen. אוקיי. 28 00:02:30,819 --> 00:02:38,441 זה עבד, אבל זה גם נראה ממש טיפשי. אני כבר קוראת לפונקצית draw על האובייקט עצמו. 29 00:02:38,441 --> 00:02:43,965 לא הגיוני שאצטרך להעביר את האובייקט כפרמטר בנוסף, זה נראה מיותר 30 00:02:43,965 --> 00:02:48,465 זה נכון, אנחנו לא צריכים לעשות את זה, אז בואו נמחק את זה, ונחשוב רגע. 31 00:02:48,465 --> 00:02:54,404 אם אנחנו בתוך האובייקט, במה נוכל להשתמש כדי לגשת למאפיינים של האובייקט? 32 00:02:54,404 --> 00:03:00,374 אם תסתכלו על הבנאי (constructor) שלנו, תיזכרו במילה המיוחדת this 33 00:03:00,374 --> 00:03:08,573 מה אם פשוט נשנה את מה שכתוב כאן, ל-"this"! נחליף את winstObject ב-this. 34 00:03:08,573 --> 00:03:12,951 כי עכשיו אנחנו בתוך האובייקט. הפונקציה הזאת מופעלת 35 00:03:12,951 --> 00:03:16,861 על האובייקט, כך ש-this יתייחס לאובייקט הנוכחי. 36 00:03:16,861 --> 00:03:23,271 אז אנו יכולים פשוט לרשום this ולגשת לכל המאפיינים של האובייקט הנוכחי. 37 00:03:23,271 --> 00:03:26,720 וזה עובד, רואים? 38 00:03:26,720 --> 00:03:31,907 אנחנו כותבים winstonAdult.draw() 39 00:03:31,907 --> 00:03:38,271 טה-דה! זה ניגש למאפיינים של winstonAdult כי זה האובייקט שעליו קוראים לפונקציה 40 00:03:38,271 --> 00:03:45,752 זה מה שממש מגניב במילה this, אפילו שזה יכול להיות קצת מבלבל לפעמים. 41 00:03:45,752 --> 00:03:52,028 אוקיי, זה היה ממש כיף, אז בואו נוסיף עוד מתודה. מה עוד אפשר שווינסטון יעשה? 42 00:03:52,028 --> 00:04:01,078 אולי נגרום לו לדבר. ניצור את Winston.prototype.talk. אנחנו יכולים לחבר כמה מתודות שנרצה לאב הטיפוס. 43 00:04:01,078 --> 00:04:05,241 נכתוב: "I'm Winston!" (אני ווינסטון) 44 00:04:05,241 --> 00:04:13,181 ואז נרשום כאן this.x+20 ו-this.y+150. 45 00:04:13,181 --> 00:04:19,734 וכמובן, לא קרה שום דבר, כי לא קראנו עדיין לפונקיה הזו. 46 00:04:19,734 --> 00:04:25,068 אז בואו נגרום לו לדבר. winstonTeen.talk() 47 00:04:25,068 --> 00:04:30,479 והופיעו המילים "אני ווינסטון"! ואם נקרא גם ל-winstonAdult.talk() 48 00:04:30,479 --> 00:04:36,828 טה-דה! אוקיי, עכשיו יש לנו טיפוס אובייקט Winston שיש לו מאפיינים: כינוי, גיל, מיקום X, מיקום Y 49 00:04:36,828 --> 00:04:45,026 ויש לו גם פונקציונליות - התנהגויות, מתודות - שמתנהגות בצורה שונה בתלות במאפיינים 50 00:04:45,026 --> 00:04:50,999 ואנחנו יכולים ליצור כמה מופעים שנרצה של Winston ולקרוא לכל המתודות האלו. 51 00:04:50,999 --> 00:04:54,000 מגניב, לא?