在前一個講談中,我們學到如何製作物件類型, 來代表我們兩種類似「溫斯頓」的物件。 然後藉由建構子,初始化它們。 一個物件類型,不只需要與其屬性相關聯。 它也可以與函數相關聯。 想想世界上所有的物件類型,例如,我們人類。 我們都有身高和年齡, 也有可以做的事情,例如, 睡覺,吃飯,和編輯程式。 我們需要能將這些函數與其物件類型相關聯。 在此程式裡,我們將接續上次的編輯, 我們這裡已有了「繪製溫斯頓」的函數, 用來呼叫兩種「溫斯頓」物件。 如果能將它附帶於溫斯頓物件類型裡, 不就更簡便了? 我們是可以這麼做,而且很容易。 所以在建構子裡,我們要編寫「溫斯頓 」, 大寫的「W 」以及「 點」、「原型」。 這「原型」是一個新詞,你可能沒見過。 「原型」是物件的屬性,可附帶函數。 這將表示,每個物件的實例, 也將附帶這些函數。 所以我們可以用「點」、「原型」、「點」, 然後「函數的名稱」。 所以我們用「繪製等於」,然後就可以 把「繪製溫斯頓」代碼, 我們就把它放置到這裡面。 好了。我們目前完成的是我們附帶了繪製函數 於我們的溫斯頓原型。 這意味著,我們應該能呼叫「繪製()」 於任一種類似「溫斯頓」的物件。 因此,我們應該能呼叫「繪製()」 於「溫斯頓少年」或「溫斯頓成人」。 當我們有了這樣能夠 呼叫物件的函數, 我們稱它為「方法」。所以, 從此你會聽我說「方法」這名詞。 我們就稱此為「繪製方法」。好了。 現在我們來刪除這個,還有刪除這個, 然後看看我們是否能呼叫「繪製()」? 「溫斯頓少年」、「點」、「繪製()」。 好的,我們有個錯誤。 這裡有明顯的錯誤。 它說,「溫斯頓物件沒被定義」。 問題是,先前我們傳遞 這個參數到「繪製溫斯頓」裡, 是一個溫斯頓物件,但現在我們傳遞不了。 所以,我們可以改變這個來傳遞, 然後,讓我們看看, 在這裡會通過甚麼? 我們得通過「溫斯頓少年」。 好了,解決了,但那似乎滿滑稽的。 我已經在物件本身呼叫繪製。 我應該不必還得另外再傳遞到物件裡。 這似乎是多餘的。 沒錯,我們應該不必這麼做。 所以,讓我們把這裡刪除。現在想想, 我們如果在物件裡,我們能使用甚麼 來取讀物件的屬性呢? 你可以看看我們的建構子, 然後想起那個特殊的關鍵字,「此」, 然後想到,啊,如果我們改變這個為「此」! 讓我們將「溫斯頓物件」改寫為「此」。 因為現在我們在這物件裡, 所以物件正在評估這函數, 好讓「此」能用來引用當前的物件。 這樣,我們只要用「此」,我們就能讀取, 當前物件的所有屬性。 這是完全有效的,看到了嗎?是不是很酷? 我們現在可以用「溫斯頓成人」、 「點」、「繪製()」。 成功!它將能讀取「溫斯頓成人」的屬性, 因為那是被呼叫的物件。 所以,很酷的是,這個「此」關鍵字。 即使,在說時會令人有點混淆。 好了。這還滿有趣的。 接下來,我們再添加一個方法。 那麼,溫斯頓還會做什麼? 也許他會說話。所以我們來製作一個 「溫斯頓點原型點講話」。 這樣我們就可附帶許多的方法於原型裡。 所以我們來說,「我是溫斯頓!」 然後,我們再用「此」、「點X+ 20」, 和有「此」、「點Y + 150」。 然後,你知道的,什麼都不會發生。 那是因為我還沒實際的呼叫那個函數。 我們讓這少年˙講話。 「溫斯頓少年點講話()」。青少年老愛說話。 好的,「我是溫斯頓」。成功了! 然後用「溫斯頓成人點講話()」。 成功了! 現在我們的溫斯頓物件類型,有了它的屬性: 暱稱、年齡、X、Y; 而且它有了功能:行為、方法; 行為的不同取決於其屬性。 我們能創建許多個我們想要的溫斯頓實例, 然後以其中一種方法就能呼叫它。 這很酷,是吧?