[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.27,0:00:03.33,Default,,0000,0000,0000,,在前一個講談中,我們學到如何製作物件類型, Dialogue: 0,0:00:03.33,0:00:06.18,Default,,0000,0000,0000,,來代表我們兩種類似「溫斯頓」的物件。 Dialogue: 0,0:00:06.19,0:00:09.03,Default,,0000,0000,0000,,然後藉由建構子,初始化它們。 Dialogue: 0,0:00:09.23,0:00:13.47,Default,,0000,0000,0000,,一個物件類型,不只需要與其屬性相關聯。 Dialogue: 0,0:00:13.47,0:00:15.87,Default,,0000,0000,0000,,它也可以與函數相關聯。 Dialogue: 0,0:00:15.87,0:00:20.29,Default,,0000,0000,0000,,想想世界上所有的物件類型,例如,我們人類。 Dialogue: 0,0:00:20.29,0:00:22.31,Default,,0000,0000,0000,,我們都有身高和年齡, Dialogue: 0,0:00:22.31,0:00:26.29,Default,,0000,0000,0000,,也有可以做的事情,例如,\N睡覺,吃飯,和編輯程式。 Dialogue: 0,0:00:26.29,0:00:30.68,Default,,0000,0000,0000,,我們需要能將這些函數與其物件類型相關聯。 Dialogue: 0,0:00:30.68,0:00:34.28,Default,,0000,0000,0000,,在此程式裡,我們將接續上次的編輯, Dialogue: 0,0:00:34.29,0:00:39.44,Default,,0000,0000,0000,,我們這裡已有了「繪製溫斯頓」的函數,\N用來呼叫兩種「溫斯頓」物件。 Dialogue: 0,0:00:39.44,0:00:44.92,Default,,0000,0000,0000,,如果能將它附帶於溫斯頓物件類型裡,\N不就更簡便了? Dialogue: 0,0:00:45.05,0:00:48.31,Default,,0000,0000,0000,,我們是可以這麼做,而且很容易。 Dialogue: 0,0:00:48.57,0:00:52.48,Default,,0000,0000,0000,,所以在建構子裡,我們要編寫「溫斯頓 」, Dialogue: 0,0:00:52.48,0:00:55.58,Default,,0000,0000,0000,,大寫的「W 」以及「 點」、「原型」。 Dialogue: 0,0:00:55.58,0:00:59.23,Default,,0000,0000,0000,,這「原型」是一個新詞,你可能沒見過。 Dialogue: 0,0:00:59.23,0:01:06.07,Default,,0000,0000,0000,,「原型」是物件的屬性,可附帶函數。 Dialogue: 0,0:01:06.07,0:01:09.71,Default,,0000,0000,0000,,這將表示,每個物件的實例, Dialogue: 0,0:01:09.71,0:01:12.53,Default,,0000,0000,0000,,也將附帶這些函數。 Dialogue: 0,0:01:12.99,0:01:17.63,Default,,0000,0000,0000,,所以我們可以用「點」、「原型」、「點」,\N然後「函數的名稱」。 Dialogue: 0,0:01:17.63,0:01:24.31,Default,,0000,0000,0000,,所以我們用「繪製等於」,然後就可以\N把「繪製溫斯頓」代碼, Dialogue: 0,0:01:24.31,0:01:28.03,Default,,0000,0000,0000,,我們就把它放置到這裡面。 Dialogue: 0,0:01:28.10,0:01:32.81,Default,,0000,0000,0000,,好了。我們目前完成的是我們附帶了繪製函數 Dialogue: 0,0:01:32.81,0:01:34.94,Default,,0000,0000,0000,,於我們的溫斯頓原型。 Dialogue: 0,0:01:34.94,0:01:40.01,Default,,0000,0000,0000,,這意味著,我們應該能呼叫「繪製()」\N於任一種類似「溫斯頓」的物件。 Dialogue: 0,0:01:40.01,0:01:45.03,Default,,0000,0000,0000,,因此,我們應該能呼叫「繪製()」\N於「溫斯頓少年」或「溫斯頓成人」。 Dialogue: 0,0:01:45.33,0:01:49.55,Default,,0000,0000,0000,,當我們有了這樣能夠\N呼叫物件的函數, Dialogue: 0,0:01:49.55,0:01:54.65,Default,,0000,0000,0000,,我們稱它為「方法」。所以,\N從此你會聽我說「方法」這名詞。 Dialogue: 0,0:01:54.65,0:01:58.09,Default,,0000,0000,0000,,我們就稱此為「繪製方法」。好了。 Dialogue: 0,0:01:58.09,0:02:03.86,Default,,0000,0000,0000,,現在我們來刪除這個,還有刪除這個,\N然後看看我們是否能呼叫「繪製()」? Dialogue: 0,0:02:03.86,0:02:06.77,Default,,0000,0000,0000,,「溫斯頓少年」、「點」、「繪製()」。 Dialogue: 0,0:02:07.01,0:02:08.29,Default,,0000,0000,0000,,好的,我們有個錯誤。 Dialogue: 0,0:02:08.29,0:02:13.58,Default,,0000,0000,0000,,這裡有明顯的錯誤。\N它說,「溫斯頓物件沒被定義」。 Dialogue: 0,0:02:13.58,0:02:18.37,Default,,0000,0000,0000,,問題是,先前我們傳遞\N這個參數到「繪製溫斯頓」裡, Dialogue: 0,0:02:18.37,0:02:22.71,Default,,0000,0000,0000,,是一個溫斯頓物件,但現在我們傳遞不了。 Dialogue: 0,0:02:22.71,0:02:27.40,Default,,0000,0000,0000,,所以,我們可以改變這個來傳遞,\N然後,讓我們看看, Dialogue: 0,0:02:27.40,0:02:30.34,Default,,0000,0000,0000,,在這裡會通過甚麼?\N我們得通過「溫斯頓少年」。 Dialogue: 0,0:02:30.34,0:02:33.90,Default,,0000,0000,0000,,好了,解決了,但那似乎滿滑稽的。 Dialogue: 0,0:02:33.90,0:02:38.08,Default,,0000,0000,0000,,我已經在物件本身呼叫繪製。 Dialogue: 0,0:02:38.08,0:02:41.78,Default,,0000,0000,0000,,我應該不必還得另外再傳遞到物件裡。 Dialogue: 0,0:02:41.78,0:02:43.94,Default,,0000,0000,0000,,這似乎是多餘的。 Dialogue: 0,0:02:43.94,0:02:45.66,Default,,0000,0000,0000,,沒錯,我們應該不必這麼做。 Dialogue: 0,0:02:45.66,0:02:48.24,Default,,0000,0000,0000,,所以,讓我們把這裡刪除。現在想想, Dialogue: 0,0:02:48.24,0:02:51.54,Default,,0000,0000,0000,,我們如果在物件裡,我們能使用甚麼 Dialogue: 0,0:02:51.54,0:02:54.27,Default,,0000,0000,0000,,來取讀物件的屬性呢? Dialogue: 0,0:02:54.27,0:02:58.05,Default,,0000,0000,0000,,你可以看看我們的建構子,\N然後想起那個特殊的關鍵字,「此」, Dialogue: 0,0:02:58.05,0:03:04.12,Default,,0000,0000,0000,,然後想到,啊,如果我們改變這個為「此」! Dialogue: 0,0:03:04.12,0:03:07.92,Default,,0000,0000,0000,,讓我們將「溫斯頓物件」改寫為「此」。 Dialogue: 0,0:03:08.38,0:03:12.95,Default,,0000,0000,0000,,因為現在我們在這物件裡,\N所以物件正在評估這函數, Dialogue: 0,0:03:12.95,0:03:16.78,Default,,0000,0000,0000,,好讓「此」能用來引用當前的物件。 Dialogue: 0,0:03:16.78,0:03:20.36,Default,,0000,0000,0000,,這樣,我們只要用「此」,我們就能讀取, Dialogue: 0,0:03:20.36,0:03:23.04,Default,,0000,0000,0000,,當前物件的所有屬性。 Dialogue: 0,0:03:23.04,0:03:26.52,Default,,0000,0000,0000,,這是完全有效的,看到了嗎?是不是很酷? Dialogue: 0,0:03:26.52,0:03:31.55,Default,,0000,0000,0000,,我們現在可以用「溫斯頓成人」、\N「點」、「繪製()」。 Dialogue: 0,0:03:31.91,0:03:35.29,Default,,0000,0000,0000,,成功!它將能讀取「溫斯頓成人」的屬性, Dialogue: 0,0:03:35.29,0:03:38.02,Default,,0000,0000,0000,,因為那是被呼叫的物件。 Dialogue: 0,0:03:38.02,0:03:41.02,Default,,0000,0000,0000,,所以,很酷的是,這個「此」關鍵字。 Dialogue: 0,0:03:41.02,0:03:44.29,Default,,0000,0000,0000,,即使,在說時會令人有點混淆。 Dialogue: 0,0:03:45.53,0:03:49.26,Default,,0000,0000,0000,,好了。這還滿有趣的。\N接下來,我們再添加一個方法。 Dialogue: 0,0:03:49.26,0:03:51.91,Default,,0000,0000,0000,,那麼,溫斯頓還會做什麼? Dialogue: 0,0:03:51.91,0:03:56.24,Default,,0000,0000,0000,,也許他會說話。所以我們來製作一個\N「溫斯頓點原型點講話」。 Dialogue: 0,0:03:56.24,0:04:00.69,Default,,0000,0000,0000,,這樣我們就可附帶許多的方法於原型裡。 Dialogue: 0,0:04:00.86,0:04:05.24,Default,,0000,0000,0000,,所以我們來說,「我是溫斯頓!」 Dialogue: 0,0:04:05.24,0:04:12.08,Default,,0000,0000,0000,,然後,我們再用「此」、「點X+ 20」,\N和有「此」、「點Y + 150」。 Dialogue: 0,0:04:12.75,0:04:15.95,Default,,0000,0000,0000,,然後,你知道的,什麼都不會發生。 Dialogue: 0,0:04:15.95,0:04:19.53,Default,,0000,0000,0000,,那是因為我還沒實際的呼叫那個函數。 Dialogue: 0,0:04:19.53,0:04:24.05,Default,,0000,0000,0000,,我們讓這少年˙講話。\N「溫斯頓少年點講話()」。青少年老愛說話。 Dialogue: 0,0:04:24.05,0:04:30.30,Default,,0000,0000,0000,,好的,「我是溫斯頓」。成功了!\N然後用「溫斯頓成人點講話()」。 Dialogue: 0,0:04:30.30,0:04:31.93,Default,,0000,0000,0000,,成功了! Dialogue: 0,0:04:31.93,0:04:36.44,Default,,0000,0000,0000,,現在我們的溫斯頓物件類型,有了它的屬性: Dialogue: 0,0:04:36.44,0:04:41.50,Default,,0000,0000,0000,,暱稱、年齡、X、Y;\N而且它有了功能:行為、方法; Dialogue: 0,0:04:41.50,0:04:44.25,Default,,0000,0000,0000,,行為的不同取決於其屬性。 Dialogue: 0,0:04:44.25,0:04:48.15,Default,,0000,0000,0000,,我們能創建許多個我們想要的溫斯頓實例, Dialogue: 0,0:04:48.15,0:04:50.65,Default,,0000,0000,0000,,然後以其中一種方法就能呼叫它。 Dialogue: 0,0:04:50.65,0:04:52.87,Default,,0000,0000,0000,,這很酷,是吧?