javaScript一種最佳化模式-初始化時分支,javascript初始化

來源:互聯網
上載者:User

javaScript一種最佳化模式-初始化時分支,javascript初始化

初始化時分支是一種最佳化模式。當知道某個條件在整個程式生命週期內都不會發生改變的時候,僅對該條件測試一次是很有意義的,瀏覽器嗅探(功能檢測)就是一個典型的例子。

2.查明DOM元素的計算樣式或者附加的事件處理常式是另外一個可以受益於初始化時分支模式的情境。如下例子:
最佳化前:

var utils ={    addListener:function(el,type,fn){        if(typeof window.addEventListener ==='function'){            el.addEventListener(type,fn,false);        } else if(typeof document.attachEvent ==='function'){            el.attachEvent('on'+type,fn);        } else{            el['on'+type]=fn;        }    },    removeListener:function(el,type,fn){        if(typeof window.removeEventListener ==='function'){            el.removeEventListener(type,fn,false);        } else if(typeof document.detachEvent ==='function'){            el.detachEvent('on'+type,fn);        } else{            el['on'+type]=null;        }    }};

上面這段代碼效率比較低下,每次在調用 utils.addListener()或者 utils.removeListener()的時候,都會重複執行相同的檢查,如果使用初始化時分支,可以在指令碼初始化載入時候一次性探測出瀏覽器特徵。此外,可以在整個頁面生命週期內重定義函數的運行方式。如下:

var utils = {    addListener:null,    removeListener:null};if(typeof window.addEventListener ==='function'){    utils.addListener=function(el,type,fn){        el.addEventListener(type,fn,false);    };    utils.removeListener=function(el,type,fn){        el.removeEventListener(type,fn,false);    };} else if(typeof document.attachEvent ==='function'){    utils.addListener=function(el,type,fn){        el.attachEvent('on'+type,fn);    };    utils.removeListener=function(el,type,fn){        el.detachEvent('on'+type,fn);    };} else{    utils.addListener=function(el,type,fn){        el['on'+type]=fn;    };    utils.removeListener=function(el,type,fn){        el['on'+type]=null;    };}

當使用這個模式時,請不要過度假設瀏覽器特徵。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.