今天,我拿到了張容銘寫的這本《JavaScript設計模式》這本書,開始了關於JavaScript更深一點的學習。編程
看到這本書開始的時候,雖然以前經過看書、一些比較好的視頻的講解,對JavaScript有了基礎的認識,可是,在看到書的內容的時候,我心裏仍是有一種本身差的十萬八千里的感受,以前的代碼寫法不行,使用全局變量、全局函數,只是面向過程的編程的方法,擴展性、可重用性過低。之後我將天天更新博客,將本身所學每一種設計模式都po出來,我要本身看到本身的進步!!加油!json
今天的內容是————面向對象的思想設計模式
主要感想:應該擯棄以前面向過程的思想和代碼寫法,儘可能減小全局變量、全局函數的使用。結合我今天看的另一本《高性能JavaScript》,針對js性能方面來講,全局變量以及DOM中的變量所在的做用域鏈的位置均在局部變量的所在位置的下方,也就是搜索順序,先找的是局部變量,後來找的纔是全局變量。所以,爲了性能的需求、團隊的合做和代碼的重用性,都應該採用面向對象的思想。函數
案例:檢查姓名、郵箱、密碼是否符合規範,詳細的檢查函數省略。性能
方法一:學習
1 //將所要添加的方法包裝與object中 2 //方法1.使用json式的方法封裝函數,缺點:沒有使用new,擴展性不強 3 var CheckObject = { 4 checkName : function(){ 5 //檢查姓名 6 alert("checkName"); 7 return this;//爲鏈式調用 8 }, 9 checkEmail : function(){ 10 //檢查Email是否合法 11 alert("checkEmail"); 12 return this;//爲鏈式調用 13 }, 14 checkPassword : function(){ 15 //檢查密碼 16 alert("checkPassword"); 17 return this;//爲鏈式調用 18 } 19 }; 20 21 方法一調用 22 CheckObject.checkName().checkEmail().checkPassword();
方法二:this
我以爲較爲好的一種方法,結合我本身類式調用的習慣,在Function的prototype中添加方法,避免對原生對象Function的污染,建立一個統一的方法爲其添加方法,在其添加方法時,爲使用類式調用,使其添加的方法在其原型中。spa
1 Function.prototype.addMethods = function(name,fn){ 2 this.prototype[name] = fn; 3 return this; 4 } 5 var Methods = function(){}; 6 // var Methods = new Function(); 7 Methods.addMethods('checkName',function(){ 8 //檢查姓名 9 alert("checkName"); 10 11 }).addMethods('checkEmail',function(){ 12 //檢查Email是否合法 13 alert("checkEmail"); 14 15 }).addMethods('checkPassword',function(){ 16 //檢查密碼 17 alert("checkPassword"); 18 19 }); 20 21 //方法二調用時 22 var m = new Methods(); 23 m.checkName();
但願你們有更好的看法隨時reply,若是有誤,請不吝賜教!prototype