開發手記(1)

昨天做了工具的頁面重構。
 
主要是對原來匆匆寫就的函數式js進行重構。
 
諸多無奈,這個系統要從頭做到尾,數據庫設計到頁面開發就俺一個。。。時間也蠻緊,但是緊歸緊,做一個新的東西就應該比原來的代碼寫的上一個臺階。
 
嘗試面向對象式的js開發,餘以爲應該看看《JavaScript高級程序設計》及《Oject-orented JavaScript》(這本沒有中文版),《Javascript設計模式》可能用不到那麼深吧。
開發前快速瀏覽了一下李戰的《悟透JavaScript》。之前對這樣的開發只是只知皮毛。因爲項目本身存在的問題,當初開發頁面各自爲戰,寫java的做頁面,自己開發自己的js,沒法做到複用,命名空間等等就更別想了。後來遷至SH,終於和頁面的DEV人員掛上鉤。但那時舊的東西都開發的差不多了,新的任務又上來了,也不敢去回頭審視已經開發過的代碼了。
 
悟透JavaScript裏面的甘露模型着實不錯。但是那貌似是人家原創的東西,而且初試身手,也不需要優雅至此。故採用原型模型開發,“原型模型需要一個構造函數來定義對象的成員,而方法卻依附在該構造函數的原型上。”
 
按照功能,定義四個原型:
 
獲取數據 ItemSearch
篩選數據 ItemFilte
計算數據 ItemCount
處理數據 ItemResult
 
因爲沒有繼承,所以也沒定義什麼對象的成員,個別的象徵性的定義了幾個。我覺得這種情況下參數從構造函數傳遞和從方法傳遞也沒什麼區別。
 
 
在開發時遇到了,在IE下判斷一個checkbox的是否checked屬性失效的問題。
以前貌似解決過這個問題,不過不知道怎麼弄了。。。但是現在既然是在jquery的框架下開發,通過給方法傳遞一個checkbox對象本身$(this)作爲參數,然後在方法裏
判斷if(checkbox.attr("checked")==true),即可解決。
 
還有一些讓自己感覺很愚蠢的this問題。在一個function裏面還有一個function,裏面的this誤以爲還能取到外面this的東西。。。其實裏面的this應該指到是裏面的function的調用者。
 
其他的用到的地方,像parseFloat啦,把價格轉成數字。toFixed啦,取保留位數,否則會出錯。
 
這裏面還有一個需要注意的地方,頁面加載時會通過jquery把事件綁定到dom上,但是頁面會動態生成checkbox,這個上面也有事件,開始也放在了頁面加載的地方綁定,當然沒有效果了。然後把這一部分移到了ajax獲取生成了這部分dom之後再進行一步綁定就可以了。
 
頁面加載後會把需要的對象都new出來,然後在每個地方就不new了,直接調用。這樣也節省了內存。
 
在document,ready之後,先執行一步這個,$("input@[type='text']").val("");
清空一下各輸入框免的操作的時候誤提交。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章