最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS設(shè)計(jì)模式之惰性模式(二)

 更新時(shí)間:2017年09月29日 10:45:27   作者:kMacro  
這篇文章主要為大家詳細(xì)介紹了JS設(shè)計(jì)模式之惰性模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

惰性模式:減少代碼每次執(zhí)行時(shí)的重復(fù)性判斷,通過(guò)重新定義對(duì)象來(lái)避免原對(duì)象中的分支判斷,提高網(wǎng)站性能。

例如針對(duì)不同瀏覽器的事件注冊(cè)方法:

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
 dom.addEventListener(type, fn, false);
 }else if(dom.attachEvent){
 dom.attachEvent('on'+type, fn);
 }else{
 dom['on'+type] = fn;
 }
}

從上面的方法可以發(fā)現(xiàn),每次為元素綁定事件時(shí),都會(huì)進(jìn)行檢測(cè)判斷,這是多余的,因?yàn)樵谕粸g覽器中分支判斷結(jié)果是唯一的,不可能走不同的分支。

我們可以用惰性模式來(lái)解決這個(gè)問(wèn)題,既然第一次調(diào)用該方法時(shí)已經(jīng)判斷過(guò)了,那么就可以在第一次執(zhí)行時(shí)根據(jù)判斷結(jié)果重新定義該方法。

惰性模式主要有兩種實(shí)現(xiàn)方法:

加載即執(zhí)行:JavaScript文件加載時(shí)通過(guò)閉包執(zhí)行對(duì)方法進(jìn)行重新定義,在頁(yè)面加載時(shí)會(huì)消耗一定的資源。

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
return function(dom, type, fn){
 dom.addEventListener(type, fn, false);
 }
 }else if(dom.attachEvent){
return function(dom, type, fn){
 dom.attachEvent('on'+type, fn);
 }
 }else{
return function(dom, type, fn){
 dom['on'+type] = fn;
 }
 }
}();

惰性執(zhí)行:第一次執(zhí)行函數(shù)時(shí)在函數(shù)內(nèi)部對(duì)其進(jìn)行顯示重寫(xiě),最后調(diào)用重寫(xiě)后的方法完成第一次方法調(diào)用。

var AddEvent = function(dom, type, fn){
 if(dom.addEventListener){
AddEvent = function(dom, type, fn){
 dom.addEventListener(type, fn, false);
 }
 }else if(dom.attachEvent){
AddEvent = function(dom, type, fn){
 dom.attachEvent('on'+type, fn);
 }
 }else{
AddEvent = function(dom, type, fn){
 dom['on'+type] = fn;
 }
 }
 AddEvent(dom, type, fn);
};


加載即執(zhí)行不同的是,JS文件加載完成后,惰性執(zhí)行的函數(shù)還沒(méi)有被重新定義,當(dāng)函數(shù)被首次調(diào)用時(shí)才會(huì)被重定義。這兩種惰性方式都避免了冗余的分支判斷。

惰性模式的應(yīng)用場(chǎng)景非常廣泛,特別是當(dāng)今瀏覽器種類繁多的現(xiàn)象,很多功能在不同瀏覽器中實(shí)現(xiàn)不一,為了兼容不同的瀏覽器,代碼中往往會(huì)有許多對(duì)不同瀏覽器的分支判斷,比如事件處理、XMLHttpRequest對(duì)象創(chuàng)建等,造成代碼臃腫冗余,惰性模式正好可以解決這種問(wèn)題,提高代碼執(zhí)行效率。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js+html制作簡(jiǎn)單驗(yàn)證碼

    js+html制作簡(jiǎn)單驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了js結(jié)合html制作簡(jiǎn)單驗(yàn)證碼的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 微信小程序?qū)崿F(xiàn)tab頁(yè)面切換功能

    微信小程序?qū)崿F(xiàn)tab頁(yè)面切換功能

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)tab頁(yè)面切換功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • JavaScript中去掉數(shù)組中的重復(fù)值的實(shí)現(xiàn)方法

    JavaScript中去掉數(shù)組中的重復(fù)值的實(shí)現(xiàn)方法

    百度面試時(shí)問(wèn)的一道題目,蠻常規(guī)的,但是當(dāng)時(shí)自己的回答挺差勁的?,F(xiàn)在總結(jié)記錄下~
    2011-08-08
  • JS格式化數(shù)字保留兩位小數(shù)點(diǎn)示例代碼

    JS格式化數(shù)字保留兩位小數(shù)點(diǎn)示例代碼

    式化數(shù)字保留兩位小數(shù)點(diǎn)實(shí)現(xiàn)的方法有很多,在接下來(lái)的文章中將為大家詳細(xì)介紹下如何使用js來(lái)實(shí)現(xiàn)
    2013-10-10
  • 淺談JS的原型和繼承

    淺談JS的原型和繼承

    這篇文章主要介紹了JS原型和繼承,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript實(shí)現(xiàn)頁(yè)面電子時(shí)鐘

    JavaScript實(shí)現(xiàn)頁(yè)面電子時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)頁(yè)面電子時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 如何利用Proxy更優(yōu)雅地處理異常詳解

    如何利用Proxy更優(yōu)雅地處理異常詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Proxy更優(yōu)雅地處理異常的相關(guān)資料,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 用js查找法實(shí)現(xiàn)當(dāng)前欄目的高亮顯示的代碼

    用js查找法實(shí)現(xiàn)當(dāng)前欄目的高亮顯示的代碼

    本文給大家介紹了使用js查找法實(shí)現(xiàn)當(dāng)前欄目的高亮顯示的代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2007-11-11
  • Javascript 制作圖形驗(yàn)證碼實(shí)例詳解

    Javascript 制作圖形驗(yàn)證碼實(shí)例詳解

    這篇文章主要介紹了Javascript 制作圖形驗(yàn)證碼實(shí)例詳解的相關(guān)資料,附有實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下
    2016-12-12
  • js如何計(jì)算斐波那契數(shù)列第n項(xiàng)的值

    js如何計(jì)算斐波那契數(shù)列第n項(xiàng)的值

    這篇文章主要介紹了js如何計(jì)算斐波那契數(shù)列第n項(xiàng)的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論

宁波市| 沙洋县| 南皮县| 佛冈县| 澜沧| 苏尼特左旗| 石台县| 巴塘县| 集安市| 遂昌县| 监利县| 广饶县| 新兴县| 修水县| 马鞍山市| 明光市| 怀安县| 柳林县| 乌兰察布市| 比如县| 武城县| 沁源县| 霍林郭勒市| 河北区| 库车县| 滕州市| 开平市| 东山县| 兴业县| 长治县| 江津市| 大石桥市| 新竹县| 台山市| 日土县| 四平市| 汉寿县| 苗栗市| 阿尔山市| 万山特区| 徐水县|