現在你們已學習到有關 Javascript的基礎知識
我要教你們一個很酷的方式 來使用JavaScript
那就是"物件導向程式設計"
首先我們要理解一下 它為什麼很實用
所以我撰寫了一個程式 讓它變得更”物件導向”後
就會變得更好
這真是一個很酷的程式
在頂部我有兩個變數 裡面儲存了簡單的物件實體語法
物件實體語法是以前 我們所學到的其中一種物件
即是我們構建了兩個大括號
然後把這些屬性名稱 及數值全部放進去
因此我們有兩個物件實體語法變數
在這裡我們有這個函數 drawWinston，它需要一個引數
然後再繪畫出引數
並根據物件的 x及 y 屬性繪畫圖像
然後根據那個物件的暱稱 及年齡屬性添加字幕
最後在底部我們呼叫 drawWinston
到青少年及成人中
這會使它顯示出來
很贊哦。假如我們到這裡 看看這些物件實體語法
就會注意到它們的外觀其實真的很相似
都具有相同系列的屬性 且兩者也可以使用相同的
drawWinston函數
其實如果你們想像一下 他們真的都在描述
某類型的Winston，對不對?
我們可以這樣想 或者在世上 存在著這抽象類型的Winston
而每一 Winston 也具有 相同系列的屬性，如暱稱
年齡、x 與 y
我們剛在這裡完成的是 建立了兩個 Winston實例
來描述特定的 Winston
因此這是青少年Winston 而這是成人Winston
但是，他們兩者真的十分相似
且很多跟他們有關的事也相近
如果你們仔細想想世間上 也有很多不同的運作方式
我們有這些抽象數據類型 如人類及群眾
我們都只是特定的實例
擁有我們自己小小的屬性
現在我們實際上可以使用 物件導向技術 Javascript
使這些 Winston 變數成為 Winston 物件的正式實例
使他們知道正在共享這些共同的東西
要這樣做的話我們需要做的 第一件事就是實際地描述
這個抽象數據類型 Winston 因此我們要作出一個變數
你們要把數據類型儲存在變數 Winston 變數，而我們用大寫W
因為我們的物件類型 通常由大寫字母開始
我們把它設置為函數
而這個函數是一個特定函數 我們把它叫做 "建構子函數"
因為我們每一次要建立 全新的 Winston 實例時
這就是被呼叫的東西
當我們要建立青少年 Winston 就會呼叫這個函數
或要建立成年人 Winston 就會呼叫這個函數
這意味著這個函數要了解 任何需要知道的引數
以作出完整的 Winston
在這種情況下，它需要知道 暱稱、年齡、x 與 y
現在，當我們收到那些引數後 就需要做一些事情
我們需要把這些資料 實際地連接到 Winston 物件
因此我們要使用全新的特別關鍵字"this"
而"this"是指目前的物件實例
我們會說 this.nickname 而它會說”好吧”
而這個物件的暱稱屬性相等於
任何被傳到建構子函數的，好囉?
this.age 相等於傳入的年齡
而 this.x 相等於傳入的 x
而 this.y 相等於傳入的 y
現在我們有這個名為 Winston 的抽象數據類型
而它帶有建構子函數 我們可以使用它來建立全新的Winston
讓我們嘗試使用它吧!
我們要重新建立 WinstonTeen
但是這一次我們用WinstonTeen等於
這裡不用大括號 我們會說 "等於全新的 Winston"
我們會說 "我們正在嘗試 建立全新的 Winston 實例"
然後我們要傳入需要的資料
"Winsteen",15, 20, 50 好囉!
然後我們刪除舊資料 因為已不再需要它們了
好了吧? 現在我們建立了 全新的Winsteen
我們會說 winstonAdult = new Winston()
當然他的名字是"Mr. Winst-a-lot" 聽起來甜美可人的名字
他30歲，在 229 及50 好，然後我們就可以刪除
這個物件實體語法 很好! 我們的代碼仍然正常運作
我們在這裡所做的就是 我們說好吧 就有這個
Winston 抽象類型數據
而我們能建立全新的 Winston 實例
且擁有這些特定的屬性
我們把這些屬性儲存在內
而記憶是非常重要的 因些你們知道內裡
有這個 this.nickname, this.age
如果意外地丟失這個年齡 你們注意到它會說 "未定義"
因為在這裡 drawWinston 函數
期待著任何傳入的物件 都帶有年齡屬性
如果我們沒有 this.age
那麼它也沒有年齡屬性 我們傳入了建構子函數
但是並沒有用它做任何事情
我們必須使用 "this"關鍵字 實際地連接到物件
那我們就把它添加回去
現在你們會想代碼已正常運作
但是......我們只是完成了前面做過的事
但這裡是一件很酷的事 我們所有的 Winstons
經過相同的建構子函數
如果我們想要進行更新 我們是真的可以修改它們的
有關 Winston 的一些東西...
所有的 Winstons 就在這裡，可能是年齡
事實上我們想說 "歲數"
我們只須放在這裡 現在所有 Winstons 說
"15歲"、 "30歲" 對嗎?
因此他們只取用獨特的部分
他們也有共享的東西
而物件導向程式設計最棒的地方
就是在這世上有這類的物件
你們能夠實際地建立這些物件的實例
而還有跟他們相似的東西
例如他們擁有相同的屬性
且有不同的東西
例如這個屬性事實上跟其他的屬性 帶有不同的數值，對不對?
你們知道嘛，我們可以 使用相同的行為
像呼叫相同的函數
以類似的方式使用它們
這是一些有關物件導向 程式設計很棒的東西
而你們將會看到更多很棒的東西
敬請繼續收看