這邊的範例來自 Professional JavaScript for Web Developers
下面的寫法讓你做出一個 oCar 的物件。但可能你需要的產生很多 Car 物件,這種方式只能一個個寫...
那麼我們來做個簡單的包裝吧~
這樣是有一點物件導向的味道了,但是我們如果不用 new 這個關鍵字,感覺缺乏了 Semantic 的意義。
如前述的問題,我們改寫一下,讓 Car 函式成為一個建構式,可以很方便地用一個 new 的關鍵字製造出許多的 Objects
上述的寫法是目前最容易看到的寫法之一。但是有些人會考量到效能面,如 showColor() 這個方法,每次 instantiate 時,裡面所有的屬性與方法都會被複製一份。其實我們可以讓這個方法只產生一次、而且被共用。
雖然這樣的效能比較好,但我個人是比較喜歡包裝在一個 constructor 內,在撰寫期間比較容易觀看。
眼尖的人會看到 Hybrid 這個字,所以我還是介紹一下 Prototype 的寫法
這種寫法有一個很討厭的缺點,就是沒辦法利用參數設定屬性。必須在 Instantiate 物件後再 Assign。我是從來沒用過這個寫法!
剛剛我們看到了以 Function 當做是一個 Class 類別,以這個 Class 類別作基底,產生 ( Instantiate ) 出一個個的物件 ( Instances )。其實對於物件,我們可以有著更多好玩的寫法。
這邊的 oYAHOO 經過宣告後就是一個獨立的物件
裡面的任何一個屬性,我們都可以用 dot notation 的方式來做存取,如 oYAHOO.bu 會取得陣列, oYAHOO.employee[0].name 會取得字串 ('aaron'), oYAHOO.enemy 會得到空值 (null), oYAHOO.employee_total 會得到整數, oYAHOO.next_action 會得到一個 function
另外你也可以透過如陣列索引的方式存取 oYAHOO[0] 會與 oYAHOO.bu 相同
這樣的格式,就是我們所稱的 JSON (JavaScript Object Notation),目前看起來似乎是儲存資料用的比較多,但其實它也可以被拿來當作是一種我們物件導向程式的寫法喔!稍後再提!
目前連 dot com 的寫法都尚未統一,我只能就看過的幾種寫法提一些建議
我目前就是採用這種方式,沒有跟 Prototype 或 Factory 混合使用。
最近花了一點時間在玩 Flickr 的 Open API,因為使用方式其實還蠻複雜的,所以我就整理成單獨一個 Js Libray 以方便後續程式的製作,在這邊當成範例。
http://www.hedgerwow.com/360/dhtml/js_performance_1.html
http://localhost/phpweb/Joshua/class/chapter13/Toggle.html
http://www.hedgerwow.com/360/doc/aptana-how-to/demo.html