[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.78,0:00:06.23,Default,,0000,0000,0000,,בפעם האחרונה, למדנו איך ליצור טיפוס אובייקט כדי לייצג את שני האובייקטים דמויי-ווינסטון שלנו Dialogue: 0,0:00:06.23,0:00:09.23,Default,,0000,0000,0000,,ואז לאתחל אותם עם בנאי (constructor). Dialogue: 0,0:00:09.23,0:00:13.47,Default,,0000,0000,0000,,טיפוס אובייקט לא חייב להיות מקושר רק עם מאפיינים. Dialogue: 0,0:00:13.47,0:00:18.81,Default,,0000,0000,0000,,הוא יכול להיות מקושר גם עם פונקציונליות. תחשבו על העולם וכל טיפוסי האובייקטים בעולם Dialogue: 0,0:00:18.81,0:00:26.29,Default,,0000,0000,0000,,כמונו, בני האדם. לכולנו יש גובה וגיל, אבל יש לנו גם דברים שאנחנו יכולים לעשות, כמו לישון, לאכול, ולתכנת. Dialogue: 0,0:00:26.29,0:00:30.94,Default,,0000,0000,0000,,ואנחנו רוצים להיות מסוגלים לקשר את הפונקציות האלו עם טיפוסי האובייקטים האלו. Dialogue: 0,0:00:30.94,0:00:35.95,Default,,0000,0000,0000,,בתוכנית הזאת, שהיא בדיוק כמו שהשארנו אותה בפעם שעברה, יש לנו את הפונקציה Dialogue: 0,0:00:35.95,0:00:43.07,Default,,0000,0000,0000,,drawWinston, שאנחנו יכולים לקרוא לה עם שני אובייקטי ווינסטון. אבל זה היה יותר נחמד אם היינו יכולים פשוט לחבר Dialogue: 0,0:00:43.07,0:00:48.57,Default,,0000,0000,0000,,את זה לטיפוס של אובייקט ווינסטון. אנחנו יכולים, וזה די קל לעשות זאת. Dialogue: 0,0:00:48.57,0:00:55.72,Default,,0000,0000,0000,,אז מתחת לבנאי, אנחנו נכתוב Winston - עם אות W גדולה - נקודה prototype, Dialogue: 0,0:00:55.72,0:00:59.23,Default,,0000,0000,0000,,אב הטיפוס (prototype), זאת מילה חדשה שכנראה לא ראיתם קודם. Dialogue: 0,0:00:59.23,0:01:05.88,Default,,0000,0000,0000,,אב הטיפוס הוא מאפיין של האובייקט שאנחנו יכולים לצרף לו פונקציות Dialogue: 0,0:01:05.88,0:01:13.31,Default,,0000,0000,0000,,וזה אומר שלכל אובייקט שהוא מופע של הטיפוס יהיו את הפונקציות האלו. Dialogue: 0,0:01:13.31,0:01:19.61,Default,,0000,0000,0000,,אז נוכל לרשום נקודה, prototype, ואז נקודה, ואז את שם הפונקציה, draw Dialogue: 0,0:01:19.61,0:01:25.61,Default,,0000,0000,0000,,ונרשום שווה, ואז נוכל לקחת את הקוד של פונקציית הציור שלנו ולשים אותו Dialogue: 0,0:01:25.61,0:01:32.95,Default,,0000,0000,0000,,כאן. אז מה שעשינו עכשיו, זה לחבר את פונקציית הציור Dialogue: 0,0:01:32.95,0:01:40.01,Default,,0000,0000,0000,,לאב הטיפוס של ווינסטון. וזה אומר שאנחנו אמורים להיות מסוגלים לקרוא ל-draw על כל אובייקט מסוג ווינסטון. Dialogue: 0,0:01:40.01,0:01:45.41,Default,,0000,0000,0000,,אז זה יהיה אפשרי לקרוא ל-draw על האובייקטים winstonTeen ו-winstonAdult. Dialogue: 0,0:01:45.41,0:01:49.57,Default,,0000,0000,0000,,וכשיש לנו פונקציה כזאת, שאנו יכולים לקרוא לה על אובייקט Dialogue: 0,0:01:49.57,0:01:54.83,Default,,0000,0000,0000,,אנו קוראים לזה "מתודה", אז מעתה אשתמש גם במילה "מתודה". Dialogue: 0,0:01:54.83,0:01:58.27,Default,,0000,0000,0000,,אז נאמר שזו "מתודת הציור". אוקיי. Dialogue: 0,0:01:58.27,0:02:04.10,Default,,0000,0000,0000,,אז עכשיו נמחק את כל זה, ונראה אם אנחנו יכולים לקרוא ל-draw? Dialogue: 0,0:02:04.10,0:02:07.07,Default,,0000,0000,0000,,winstonTeen.draw() Dialogue: 0,0:02:07.07,0:02:13.70,Default,,0000,0000,0000,,אוקיי. יש לנו שגיאה, ראינו אותה קופצת כאן, וכתוב: "winstObject is not defined" (האובייקט winstObject לא מוגדר). Dialogue: 0,0:02:13.70,0:02:20.53,Default,,0000,0000,0000,,אוקיי. קודם, היינו מעבירים את הפרמטר הזה, האובייקט ווינסטון, לפונקציה drawWinston Dialogue: 0,0:02:20.53,0:02:26.46,Default,,0000,0000,0000,,אבל עכשיו אנחנו לא מעבירים אותו יותר. אז אנחנו יכולים להעביר אותו Dialogue: 0,0:02:26.46,0:02:30.82,Default,,0000,0000,0000,,ומה אנחנו אמורים להעביר פה? נרצה להעביר את winstonTeen. אוקיי. Dialogue: 0,0:02:30.82,0:02:38.44,Default,,0000,0000,0000,,זה עבד, אבל זה גם נראה ממש טיפשי. אני כבר קוראת לפונקצית draw על האובייקט עצמו. Dialogue: 0,0:02:38.44,0:02:43.96,Default,,0000,0000,0000,,לא הגיוני שאצטרך להעביר את האובייקט כפרמטר בנוסף, זה נראה מיותר Dialogue: 0,0:02:43.96,0:02:48.46,Default,,0000,0000,0000,,זה נכון, אנחנו לא צריכים לעשות את זה, אז בואו נמחק את זה, ונחשוב רגע. Dialogue: 0,0:02:48.46,0:02:54.40,Default,,0000,0000,0000,,אם אנחנו בתוך האובייקט, במה נוכל להשתמש כדי לגשת למאפיינים של האובייקט? Dialogue: 0,0:02:54.40,0:03:00.37,Default,,0000,0000,0000,,אם תסתכלו על הבנאי (constructor) שלנו, תיזכרו במילה המיוחדת this Dialogue: 0,0:03:00.37,0:03:08.57,Default,,0000,0000,0000,,מה אם פשוט נשנה את מה שכתוב כאן, ל-"this"! נחליף את winstObject ב-this. Dialogue: 0,0:03:08.57,0:03:12.95,Default,,0000,0000,0000,,כי עכשיו אנחנו בתוך האובייקט. הפונקציה הזאת מופעלת Dialogue: 0,0:03:12.95,0:03:16.86,Default,,0000,0000,0000,,על האובייקט, כך ש-this יתייחס לאובייקט הנוכחי. Dialogue: 0,0:03:16.86,0:03:23.27,Default,,0000,0000,0000,,אז אנו יכולים פשוט לרשום this ולגשת לכל המאפיינים של האובייקט הנוכחי. Dialogue: 0,0:03:23.27,0:03:26.72,Default,,0000,0000,0000,,וזה עובד, רואים? Dialogue: 0,0:03:26.72,0:03:31.91,Default,,0000,0000,0000,,אנחנו כותבים winstonAdult.draw() Dialogue: 0,0:03:31.91,0:03:38.27,Default,,0000,0000,0000,,טה-דה! זה ניגש למאפיינים של winstonAdult כי זה האובייקט שעליו קוראים לפונקציה Dialogue: 0,0:03:38.27,0:03:45.75,Default,,0000,0000,0000,,זה מה שממש מגניב במילה this, אפילו שזה יכול להיות קצת מבלבל לפעמים. Dialogue: 0,0:03:45.75,0:03:52.03,Default,,0000,0000,0000,,אוקיי, זה היה ממש כיף, אז בואו נוסיף עוד מתודה. מה עוד אפשר שווינסטון יעשה? Dialogue: 0,0:03:52.03,0:04:01.08,Default,,0000,0000,0000,,אולי נגרום לו לדבר. ניצור את Winston.prototype.talk. אנחנו יכולים לחבר כמה מתודות שנרצה לאב הטיפוס. Dialogue: 0,0:04:01.08,0:04:05.24,Default,,0000,0000,0000,,נכתוב: "I'm Winston!" (אני ווינסטון) Dialogue: 0,0:04:05.24,0:04:13.18,Default,,0000,0000,0000,,ואז נרשום כאן this.x+20 ו-this.y+150. Dialogue: 0,0:04:13.18,0:04:19.73,Default,,0000,0000,0000,,וכמובן, לא קרה שום דבר, כי לא קראנו עדיין לפונקיה הזו. Dialogue: 0,0:04:19.73,0:04:25.07,Default,,0000,0000,0000,,אז בואו נגרום לו לדבר. winstonTeen.talk() Dialogue: 0,0:04:25.07,0:04:30.48,Default,,0000,0000,0000,,והופיעו המילים "אני ווינסטון"! ואם נקרא גם ל-winstonAdult.talk() Dialogue: 0,0:04:30.48,0:04:36.83,Default,,0000,0000,0000,,טה-דה! אוקיי, עכשיו יש לנו טיפוס אובייקט Winston שיש לו מאפיינים: כינוי, גיל, מיקום X, מיקום Y Dialogue: 0,0:04:36.83,0:04:45.03,Default,,0000,0000,0000,,ויש לו גם פונקציונליות - התנהגויות, מתודות - שמתנהגות בצורה שונה בתלות במאפיינים Dialogue: 0,0:04:45.03,0:04:50.100,Default,,0000,0000,0000,,ואנחנו יכולים ליצור כמה מופעים שנרצה של Winston ולקרוא לכל המתודות האלו. Dialogue: 0,0:04:50.100,0:04:54.00,Default,,0000,0000,0000,,מגניב, לא?