[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.19,0:00:03.17,Default,,0000,0000,0000,,חזרנו עם התוכנית שלנו שיוצרת ווינסטונים Dialogue: 0,0:00:03.17,0:00:07.59,Default,,0000,0000,0000,,אבל הוספתי טיפוס אובייקט חדש\Nשנקרא Hopper (הופר). Dialogue: 0,0:00:07.59,0:00:11.92,Default,,0000,0000,0000,,אני מגדירה את הופר באותו אופן\Nשהגדרתי את ווינסטון Dialogue: 0,0:00:11.92,0:00:15.84,Default,,0000,0000,0000,,התחלתי עם פונקציית בנאי, נתתי לו את אותם\Nהמאפיינים ואת המתודה draw Dialogue: 0,0:00:15.84,0:00:20.50,Default,,0000,0000,0000,,והמתודה talk, ואז הוספתי עוד מתודה שנקראת Dialogue: 0,0:00:20.50,0:00:23.81,Default,,0000,0000,0000,,hooray (הידד), כי הופר אוהב לחגוג,\Nלעומת ווינסטון שלא אוהב את זה כלל. Dialogue: 0,0:00:23.81,0:00:27.92,Default,,0000,0000,0000,,בתחתית הפונקציה יצרתי שני אובייקטי הופר חדשים Dialogue: 0,0:00:27.92,0:00:31.17,Default,,0000,0000,0000,,שקראתי להם lilHopper ו- bigHopper Dialogue: 0,0:00:31.17,0:00:35.35,Default,,0000,0000,0000,,וציירתי אותם, וקראתי למתודה talk על אחד,\Nולמתודה hooray על האחר Dialogue: 0,0:00:35.35,0:00:37.51,Default,,0000,0000,0000,,זה די מגניב Dialogue: 0,0:00:37.51,0:00:39.93,Default,,0000,0000,0000,,אם נסתכל על הקוד הזה כאן למעלה Dialogue: 0,0:00:39.93,0:00:41.82,Default,,0000,0000,0000,,אולי תשימו לב לדבר מעניין. Dialogue: 0,0:00:41.97,0:00:52.32,Default,,0000,0000,0000,,הקוד עבור Hopper הוא מאוד דומה לקוד\Nעבור Winston. בייחוד הסתכלו על הבנאי.\Nזהו אותו קוד כמו הבנאי של ווינסטון. Dialogue: 0,0:00:52.32,0:01:00.75,Default,,0000,0000,0000,,וגם הפונקציה talk היא בדיוק אותו קוד כמו\Nהפונקציה talk של ווינסטון. Dialogue: 0,0:01:00.76,0:01:03.90,Default,,0000,0000,0000,,ולשניהם יש פונקציית draw זהה Dialogue: 0,0:01:03.90,0:01:07.92,Default,,0000,0000,0000,,כך שיש הרבה דברים משותפים\Nלשני טיפוסי האובייקטים האלו Dialogue: 0,0:01:07.92,0:01:11.34,Default,,0000,0000,0000,,וזה הגיוני, כי אתם מבינים ש-Hopper\Nו-Winston הם שני טיפוסי אובייקטים Dialogue: 0,0:01:11.34,0:01:15.30,Default,,0000,0000,0000,,דומים בעולם שלנו. אם תחשבו על העולם האמיתי Dialogue: 0,0:01:15.30,0:01:20.01,Default,,0000,0000,0000,,מחוץ למחשב, רוב טיפוסי האובייקטים חולקים Dialogue: 0,0:01:20.01,0:01:21.42,Default,,0000,0000,0000,,מאפיינים דומים עם טיפוסי אובייקטים אחרים. Dialogue: 0,0:01:21.42,0:01:23.64,Default,,0000,0000,0000,,כמו למשל בממלכת החי. כל החיות Dialogue: 0,0:01:23.64,0:01:26.81,Default,,0000,0000,0000,,דומות אחת לשניה בדרכים מסוימות.\Nויש לנו סוגים שונים של חיות Dialogue: 0,0:01:26.81,0:01:31.59,Default,,0000,0000,0000,,כמו למשל בני אדם.\Nולבני אדם יש דברים משותפים עם שאר עולם החי Dialogue: 0,0:01:31.59,0:01:34.33,Default,,0000,0000,0000,,אבל יש להם גם דברים שמשותפים\Nרק עם בני אדם אחרים. Dialogue: 0,0:01:34.33,0:01:35.82,Default,,0000,0000,0000,,אז נוכל לומר Dialogue: 0,0:01:36.20,0:01:38.97,Default,,0000,0000,0000,,שחיה היא טיפוס של אובייקט שהטיפוס\Nשל בן אדם יורש ממנו פונקציונליות. Dialogue: 0,0:01:38.97,0:01:46.86,Default,,0000,0000,0000,,אנחנו לא מתחילים מאפס, אנו מוסיפים על\Nהפונקציונליות שירשנו מהיותנו בעלי חיים. Dialogue: 0,0:01:46.86,0:01:49.20,Default,,0000,0000,0000,,למשל, כל בעלי החיים משמיעים קולות Dialogue: 0,0:01:49.20,0:01:51.41,Default,,0000,0000,0000,,אבל בני אדם משתמשים בשפה. Dialogue: 0,0:01:51.41,0:01:54.67,Default,,0000,0000,0000,,הרעיון הזה של ירושה Dialogue: 0,0:01:54.67,0:01:56.70,Default,,0000,0000,0000,,הוא מאוד שימושי גם בתכנות. Dialogue: 0,0:01:56.70,0:01:59.86,Default,,0000,0000,0000,,אנו יוצרים שרשרת של ירושת אובייקטים\Nבקוד ה-Javascript שלנו. Dialogue: 0,0:01:59.86,0:02:02.53,Default,,0000,0000,0000,,כדי לעשות זאת תחשבו על Dialogue: 0,0:02:02.53,0:02:04.42,Default,,0000,0000,0000,,מה משותף לטיפוסי האובייקטים שלנו Dialogue: 0,0:02:04.42,0:02:06.63,Default,,0000,0000,0000,,נמציא לדבר המשותף שם Dialogue: 0,0:02:06.63,0:02:08.68,Default,,0000,0000,0000,,כי אנחנו הולכים ליצור טיפוס אובייקט חדש Dialogue: 0,0:02:08.68,0:02:10.58,Default,,0000,0000,0000,,שמייצג את אובייקט הבסיס. Dialogue: 0,0:02:10.58,0:02:12.09,Default,,0000,0000,0000,,הבה נקרא להם יצורים (creatures). Dialogue: 0,0:02:12.09,0:02:13.87,Default,,0000,0000,0000,,הם שניהם יצורים. Dialogue: 0,0:02:13.87,0:02:17.83,Default,,0000,0000,0000,,אז נאמר var Creature שווה..\Nואז נרצה לשים את פונקציית הבנאי שלנו Dialogue: 0,0:02:17.83,0:02:22.34,Default,,0000,0000,0000,,אז בואו פשוט נגנוב את זאת של Hopper\Nכי היא זהה גם לזו של Winston. Dialogue: 0,0:02:22.34,0:02:23.76,Default,,0000,0000,0000,,אוקיי. Dialogue: 0,0:02:23.76,0:02:27.17,Default,,0000,0000,0000,,ואז, בואו נראה.. Dialogue: 0,0:02:27.17,0:02:28.14,Default,,0000,0000,0000,,עכשיו אנחנו רוצים.. Dialogue: 0,0:02:28.14,0:02:29.51,Default,,0000,0000,0000,,מה נרצה לעשות עכשיו? Dialogue: 0,0:02:29.51,0:02:31.97,Default,,0000,0000,0000,,אולי אנחנו רוצים להוסיף את הפונקציה\Nשל דיבור (talk) Dialogue: 0,0:02:31.97,0:02:39.30,Default,,0000,0000,0000,,אז גם עבור מתודת talk נגנוב את של Hopper.\Nאבל כמובן נרצה שהיא תהיה חלק מהאב טיפוס\Nשל היצור (creature) במקום. Dialogue: 0,0:02:39.30,0:02:41.68,Default,,0000,0000,0000,,אוקיי, יפה. Dialogue: 0,0:02:41.68,0:02:45.30,Default,,0000,0000,0000,,אז עכשיו יש לנו את טיפוס האובייקט של יצור. Dialogue: 0,0:02:45.30,0:02:47.81,Default,,0000,0000,0000,,אבל אנחנו צריכים לספר ל-Hopper שהוא צריך Dialogue: 0,0:02:47.81,0:02:51.14,Default,,0000,0000,0000,,לבסס את הפונקציונליות שלו על זו של Creature Dialogue: 0,0:02:51.25,0:02:51.25,Default,,0000,0000,0000,,נעשה זאת על ידי כך שנרשום את השורה הבאה Dialogue: 0,0:02:53.82,0:02:58.60,Default,,0000,0000,0000,,נרשום Hopper.prototype Dialogue: 0,0:02:58.60,0:03:01.97,Default,,0000,0000,0000,,שווה ל-Object.create Dialogue: 0,0:03:01.97,0:03:04.98,Default,,0000,0000,0000,,Creature.prototype Dialogue: 0,0:03:04.98,0:03:14.20,Default,,0000,0000,0000,,מה שהשורה הזו עושה הוא לספר ל-Javascript\Nשצריך לבסס את אב הטיפוס של Hopper,\Nכלומר את כל הפונקציונליות של Hopper,\Nעל אב הטיפוס של Creature. Dialogue: 0,0:03:14.20,0:03:22.34,Default,,0000,0000,0000,,זה אומר שבכל פעם שהשפה תחפש פונקציה של\Nהופר, היא מחפשת קודם באב טיפוס של הופר, Dialogue: 0,0:03:22.34,0:03:26.43,Default,,0000,0000,0000,,אבל אחר כך, אם היא לא תמצא את הפונקציה\Nהיא תחפש אותה באב טיפוס של Creature. Dialogue: 0,0:03:26.43,0:03:29.20,Default,,0000,0000,0000,,הרעיון הזה נקרא שרשרת אבות טיפוס\N(prototype chain) Dialogue: 0,0:03:29.20,0:03:34.03,Default,,0000,0000,0000,,עכשיו, ברגע שעשינו זאת, אנחנו יכולים למחוק Dialogue: 0,0:03:34.03,0:03:35.63,Default,,0000,0000,0000,,את המתודה talk מ-Hopper Dialogue: 0,0:03:35.63,0:03:38.30,Default,,0000,0000,0000,,כי היא כבר קיימת אצל Creature Dialogue: 0,0:03:38.30,0:03:40.23,Default,,0000,0000,0000,,שנמצא גבוה יותר בשרשרת אבות הטיפוס. Dialogue: 0,0:03:40.23,0:03:42.54,Default,,0000,0000,0000,,מוכנים? Dialogue: 0,0:03:42.54,0:03:43.92,Default,,0000,0000,0000,,זה עבד! Dialogue: 0,0:03:43.92,0:03:46.80,Default,,0000,0000,0000,,זה עובד, כי מצאנו את הפונקציה באב הטיפוס\Nשל Creature במקום. Dialogue: 0,0:03:46.80,0:03:51.23,Default,,0000,0000,0000,,ננסה למחוק את הפונקציה הזו גם אצל ווינסטון. Dialogue: 0,0:03:51.23,0:03:57.68,Default,,0000,0000,0000,,אוקיי, זה לא עבד - אין לאובייקט מתודת talk. Dialogue: 0,0:03:57.68,0:04:01.26,Default,,0000,0000,0000,,מדוע? ובכן, יש לנו את הבנאי של ווינסטון Dialogue: 0,0:04:01.26,0:04:03.52,Default,,0000,0000,0000,,ואת המתודה draw, ומחקנו את talk. Dialogue: 0,0:04:03.52,0:04:07.92,Default,,0000,0000,0000,,שימו לב ששכחנו לספר גם לאב הטיפוס של ווינסטון Dialogue: 0,0:04:07.92,0:04:09.41,Default,,0000,0000,0000,,שעליו להתבסס על אב הטיפוס של יצור. Dialogue: 0,0:04:09.41,0:04:10.71,Default,,0000,0000,0000,,אז אנחנו צריכים את השורה החשובה הזו. Dialogue: 0,0:04:10.71,0:04:13.04,Default,,0000,0000,0000,,Winston.prototype שווה\Nל- Object.create Dialogue: 0,0:04:13.04,0:04:15.19,Default,,0000,0000,0000,,ואז בסוגריים Creature.prototype Dialogue: 0,0:04:15.19,0:04:19.29,Default,,0000,0000,0000,,יפה! Dialogue: 0,0:04:19.29,0:04:20.43,Default,,0000,0000,0000,,שימו לב למשהו חשוב Dialogue: 0,0:04:20.43,0:04:26.10,Default,,0000,0000,0000,,שמתי את השורה הזו אחרי פונקציית הבנאי,\Nאבל לפני שאני מוסיפה כל דבר אחר Dialogue: 0,0:04:26.10,0:04:28.64,Default,,0000,0000,0000,,לאב הטיפוס של ווינסטון.\Nזה מה שבדרך כלל תרצו לעשות. Dialogue: 0,0:04:28.64,0:04:29.33,Default,,0000,0000,0000,,אתם רוצים Dialogue: 0,0:04:29.33,0:04:31.23,Default,,0000,0000,0000,,לספר לאובייקט מיד בהתחלה Dialogue: 0,0:04:31.23,0:04:33.86,Default,,0000,0000,0000,,שזהו אב הטיפוס הראשוני שעליו האב טיפוס\Nהנוכחי יהיה מבוסס Dialogue: 0,0:04:33.86,0:04:36.80,Default,,0000,0000,0000,,אבל אחר כך אנו מוסיפים עוד דברים לאב-טיפוס הזה Dialogue: 0,0:04:36.80,0:04:41.67,Default,,0000,0000,0000,,כי יכול להיות משהו שהוא ייחודי\Nל-Winston או ייחודי ל-Hopper Dialogue: 0,0:04:41.67,0:04:43.91,Default,,0000,0000,0000,,שאין לאובייקטי Creature. Dialogue: 0,0:04:43.91,0:04:45.40,Default,,0000,0000,0000,,זה ממש מגניב שאתם יכולים להגדיר כאלו דברים. Dialogue: 0,0:04:45.40,0:04:50.26,Default,,0000,0000,0000,,אוקיי. אם תסתכלו על זה,\Nעדיין יש לנו קצת קוד שחוזר על עצמו Dialogue: 0,0:04:50.26,0:04:51.52,Default,,0000,0000,0000,,הקוד של הבנאי. Dialogue: 0,0:04:51.52,0:04:53.37,Default,,0000,0000,0000,,נכון? יש לנו אותו שלוש פעמים. Dialogue: 0,0:04:53.37,0:04:56.64,Default,,0000,0000,0000,,האם אנחנו יכולים פשוט למחוק אותו? Dialogue: 0,0:04:56.64,0:04:57.84,Default,,0000,0000,0000,,בואו ננסה. Dialogue: 0,0:04:57.84,0:05:03.51,Default,,0000,0000,0000,,אוקיי.. לא נראה שזה עבד Dialogue: 0,0:05:03.51,0:05:07.34,Default,,0000,0000,0000,,כי Hopper הופיע בפינה השמאלית העליונה,\Nכאילו הוא שכח את כל המאפיינים שלו Dialogue: 0,0:05:07.34,0:05:15.26,Default,,0000,0000,0000,,זה כיוון ששפת Javascript לא מניחה שאתם\Nרוצים את אותו בנאי, גם אם אתם רוצים לבסס\Nאת האב-טיפוס עליו Dialogue: 0,0:05:15.26,0:05:19.36,Default,,0000,0000,0000,,כך שניתן להגדיר בנאי משלנו לאובייקטים האלו. Dialogue: 0,0:05:19.36,0:05:23.98,Default,,0000,0000,0000,,אבל יש גם דרך קלה לקרוא לבנאי של אובייקט אחר Dialogue: 0,0:05:23.98,0:05:28.93,Default,,0000,0000,0000,,נעשה זאת כך: Dialogue: 0,0:05:28.93,0:05:35.47,Default,,0000,0000,0000,,(Creature.call(this, nickname, age, x, y Dialogue: 0,0:05:35.47,0:05:40.60,Default,,0000,0000,0000,,ראיתם, זה עבד. מה שזה עושה Dialogue: 0,0:05:40.60,0:05:43.68,Default,,0000,0000,0000,,זה לקרוא לבנאי של Creature. Dialogue: 0,0:05:43.68,0:05:50.34,Default,,0000,0000,0000,,זה קורא לפונקציה הזו, וזה אומר לקוד לקרוא לבנאי Dialogue: 0,0:05:50.34,0:05:53.76,Default,,0000,0000,0000,,כאילו הוא נקרא ישירות בתוך אובייקט Hopper Dialogue: 0,0:05:53.76,0:05:56.97,Default,,0000,0000,0000,,וכאילו הוא נקרא עם הפרמטרים האלו Dialogue: 0,0:05:56.97,0:05:59.43,Default,,0000,0000,0000,,אלו הם הפרמטרים שאיתם קראו ל-Hopper. Dialogue: 0,0:05:59.43,0:06:03.59,Default,,0000,0000,0000,,וזה פשוט יבצע את הקוד הזה כאילו הוא היה כאן\Nבתוך הבנאי של האובייקט. Dialogue: 0,0:06:03.59,0:06:05.40,Default,,0000,0000,0000,,זה בדיוק מה שאנחנו רוצים, וזה עבד. Dialogue: 0,0:06:05.40,0:06:09.71,Default,,0000,0000,0000,,אנחנו יכולים Dialogue: 0,0:06:09.71,0:06:11.52,Default,,0000,0000,0000,,להעתיק את השורה הזאת גם לתוך Dialogue: 0,0:06:11.52,0:06:13.76,Default,,0000,0000,0000,,הבנאי של Winston. Dialogue: 0,0:06:13.76,0:06:16.53,Default,,0000,0000,0000,,וזה עובד. יופי! Dialogue: 0,0:06:16.53,0:06:24.90,Default,,0000,0000,0000,,אוקיי. תראו את זה. איחדנו את כל המאפיינים\Nהמשותפים והפונקציונליות המשותפת לתוך\Nאובייקט בסיס יחיד, Creature Dialogue: 0,0:06:24.90,0:06:28.21,Default,,0000,0000,0000,,ויצרנו שני טיפוסי אובייקטים שמרחיבים\Nאת אובייקט הבסיס. Dialogue: 0,0:06:28.21,0:06:30.98,Default,,0000,0000,0000,,הם יורשים פונקציונליות,\Nאבל הם גם מוסיפים דברים משלהם. Dialogue: 0,0:06:30.98,0:06:36.34,Default,,0000,0000,0000,,ומה שנחמד זה שאנחנו יכולים לשנות את\Nהפונקציונליות המשותפת במקום אחד. Dialogue: 0,0:06:36.34,0:06:40.30,Default,,0000,0000,0000,,למשל אם נרצה לשנות את הגיל כמו קודם,\Nנוכל לרשום '+' "yrs old" Dialogue: 0,0:06:40.30,0:06:43.91,Default,,0000,0000,0000,,עכשיו לכולם רשום "yrs old" אחרי הגיל שלהם. Dialogue: 0,0:06:43.91,0:06:49.87,Default,,0000,0000,0000,,או שאנחנו יכולים לשנות את המתודה talk, שיהיה כתוב "SUP" Dialogue: 0,0:06:49.87,0:06:57.17,Default,,0000,0000,0000,,ועכשיו כל ה-Winstonים וה-Hopperים\Nאומרים "SUP".\Nעכשיו כשראיתם איך ליצור\Nטיפוסי אובייקטים ואיך לרשת מטיפוסי אובייקטים Dialogue: 0,0:06:57.17,0:07:01.35,Default,,0000,0000,0000,,אתם יכולים להתחיל לחשוב על איך זה יכול להיות\Nשימושי בציורים, באנימציות, בסימולציות ובמשחקים. Dialogue: 0,0:07:01.35,0:07:05.26,Default,,0000,0000,0000,,לדוגמה, אולי יש לכם משחק ויש בו הרבה סוגי דמויות Dialogue: 0,0:07:05.26,0:07:07.68,Default,,0000,0000,0000,,וכולן יכולות לרוץ אבל רק חלקן יכולות לקפוץ Dialogue: 0,0:07:07.68,0:07:11.97,Default,,0000,0000,0000,,זהו מקום מושלם בשביל כמה טיפוסי אובייקטים\Nושימוש בירושה. Dialogue: 0,0:07:11.97,0:07:15.97,Default,,0000,0000,0000,,אבל אני בטוחה שאתם יכולים לחשוב\Nעל עוד הרבה שימושים אחרים.