面向对象写js
這是個問題,平常也沒思考過,被問到了,一時也沒理清楚自己的思路,當時只蹦出namespace這么個想法;
平時的工作跟javascript打交道的時候一般是做一些頁面里的交互體驗增強,基本上全是用jQuery,查找一些元素,做些計算,做些屬性更改,做一些事件綁定處理,做些AJAX;
數據模型也就是定義JSON對象,其實用javascript?OO定義前端的model的情況比較少啦;
這兩天讀了網上的一些文章,今天稍微整理一下關于這個問題的多個角度。
?
1.?Object?Instantiation
| ?//?基礎,不多解釋了Cheap?Reading?glasses var?People?=?function?People(firstName,lastName)?{ ?????this.firstName?=?firstName; ?????this.lastName?=?lastName; ?????this.getName?=?function()?{ ??????????return?this.lastName+"?"+this.firstName;?????//?chinese?way ?????} } |
?
?
2.?Prototype?Inheritence
| //?常規寫法,?當然還有些其他寫法,?例如參考2里的Object.create,?但是本質是一樣的啦 var?Employee?=?function?Employee(firstName,?lastName,?salary)?{ ?????People.call(this,firstName,lastName); ?????this.salary?=?salary; } | |
| (function()?{ ?????//?通過?ID?獲取?Cheap?Sunglasses??對象 ?????function?$(id)?{ ??????????return?document.getElementById(id); ?????} ?????//?顯示對應?ID?的對象的節點類型名字 ?????function?myMethod(id)?{ ??????????alert($(id).nodeName); ?????} ?????//?這是對外的接口 ?????window['myNamespace']=?{} ?????window['myNameSpace']['$']?=?$; })();? | |
5.?Module?(commonJS)
javascript越來越流行,從前幾年的AJAX,到現在的nodeJS,前端MVC等等,
騰訊做的WebQQ也是這一范疇,或者還有360桌面,網頁和App的界限越來越模糊,
甚至有完全基于瀏覽器的ChromOS的硬件
這些都說明,javascript天降大任,雖然javascript先天發育得不好。。。
commonJS其實是個規范,而nodeJS是這個規范的實現之一,它的目標是做一個javascript標準庫(就像JDK,ruby?Gem一樣),借助javascript引擎(eg:?V8),使得javascript也能處理更多的應用場景,學習其他語言成熟的模塊化當然是可行的。
當然,自己實現javascript模塊的時候,從邏輯上和物理上區分也是不錯的實踐方法。
?
6.?Module?load?(requireJSTitanium?Optical?Frame)
javscript的庫其實很多,有非常成功的jQuery,prototype,YUI等等,由于global對象的關系,不同的庫存在對象的沖突,
這時候就需要模塊加載機制,管理很多js文件,避免沖突等等,requireJS是用的比較多的一個加載庫,google其實也有。
轉載于:https://www.cnblogs.com/imadin/archive/2011/07/27/2118299.html
總結
- 上一篇: VC++(关于CTreecontrol控
- 下一篇: java 数组的拷贝 对象数组的拷贝