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

JS優(yōu)化與惰性載入函數實例分析

 更新時間:2017年04月06日 10:05:39   作者:柒青衿  
這篇文章主要介紹了JS優(yōu)化與惰性載入函數,結合具體實例形式分析了JS惰性載入的原理、實現(xiàn)技巧與相關注意事項,需要的朋友可以參考下

本文實例講述了JS優(yōu)化與惰性載入函數。分享給大家供大家參考,具體如下:

惰性載入函數

由于現(xiàn)在瀏覽器之間的差異,為了實現(xiàn)跨瀏覽器工作,很多函數要書寫大量if語句或者try…catch…語句。當每次調用函數時,都要對每個if分支或try語句進行檢查,這樣會使得瀏覽器反應變慢。實際上,當我們用某個瀏覽器打開網頁時,就決定了某個if分支或try語句是可用的,沒有必要每次調用都檢查。為了解決以上問題,JavaScript中出現(xiàn)一種名為惰性載入的技巧。

惰性載入表示函數執(zhí)行的分支僅會發(fā)生一次。有兩種實現(xiàn)惰性載入的方式:在函數被調用時再處理函數;在聲明函數時就指定適當函數。

借用JavaScript高級程序設計中的例子來說明這兩種解決方案。

創(chuàng)建XHR對象的兼容寫法如下:

function createXHR(){
  if (typeof XMLHttpRequest != "undefined"){
    return new XMLHttpRequest();
  } else if (typeof ActiveXObject != "undefined"){
    if (typeof arguments.callee.activeXString != "string"){
      var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0",
              "MSXML2.XMLHttp"];
      for (var i=0,len=versions.length; i < len; i++){
        try {
          var xhr = new ActiveXObject(versions[i]);
          arguments.callee.activeXString = versions[i];
          return xhr;
        } catch (ex){
          //skip
        }
      }
    }
    return new ActiveXObject(arguments.callee.activeXString);
  } else {
    throw new Error("No XHR object available.");
  }
}

使用惰性載入的第一種方法——在函數被調用時再處理函數:

function createXHR(){
  if(typeof XMLHttpRequest!="undefined"){
    createXHR=function(){
      return new XMLHttpRequest();
    };
  }else if(typeof ActiveXObject!="undefined"){
    createXHR=function(){
      if(typeof arguments.callee.activeXString!="string"){
        var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
          i,len;
        for(i=0,len=versions.length;i<len;i++){
          try{
            new ActiveXObject(versions[i]);
            arguments.callee.activeXString=versions[i];
            break;
          }catch(ex){
            //skip
          }
        }
      }
      return new ActiveXObject(arguments.callee.activeXString);
    };
  }else{
    createXHR=function(){
      throw new Error("No XHR object available.");
    };
  }
  return CreateXHR();
}

使用惰性載入的第二種方法——在聲明函數時就指定適當函數:

var createXHR=(function(){
  if(typeof XMLHttpRequest!="undefined"){
    return function(){
      return new XMLHttpRequest();
    };
  }else if(typeof ActiveXObject!="undefined"){
    return function(){
      if(typeof arguments.callee.activeXString!="string"){
        var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
          i,len;
        for(i=0,len=versions.length;i<len;i++){
          try{
            new ActiveXObject(versions[i]);
            arguments.callee.activeXString=versions[i];
            break;
          }catch(ex){
            //skip
          }
        }
      }
      return new ActiveXObject(arguments.callee.activeXString);
    };
  }else{
    return function(){
      throw new Error("No XHR object available.");
    };
  }
})();

上例中,使用的是一個匿名、自執(zhí)行的函數,用以確定應該使用哪個函數。

以上兩種使用惰性載入函數的共同優(yōu)點是,只在第一次執(zhí)行函數時犧牲部分性能,可以提高代碼效率。

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript中json操作技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • wangEditor編輯器失去焦點后仍然可以在原位置插入圖片分析

    wangEditor編輯器失去焦點后仍然可以在原位置插入圖片分析

    本文給大家?guī)淼氖且豢罘浅2诲e的富文本編輯器WangEditor,他最大的特點是它在ie6,7,8上都可以做到失去焦點后仍然可以在原位置插入圖片,而且代碼量很少,下面我們就來分析下他是如何實現(xiàn)的呢
    2015-05-05
  • JavaScript EasyPager 分頁函數

    JavaScript EasyPager 分頁函數

    好久不寫js,手都有點生了。寫個小東西熱手。
    2011-05-05
  • JavaScript語法 JSON序列化之stringify實例詳解

    JavaScript語法 JSON序列化之stringify實例詳解

    這篇文章主要為大家介紹了JavaScript語法 JSON序列化之stringify實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Javascript的閉包

    Javascript的閉包

    所謂“閉包”,指的是一個擁有許多變量和綁定了這些變量的環(huán)境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。
    2009-12-12
  • 微信小程序按鈕點擊跳轉頁面詳解

    微信小程序按鈕點擊跳轉頁面詳解

    這篇文章主要介紹了微信小程序按鈕點擊跳轉頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • javascript動畫之模擬拖拽效果篇

    javascript動畫之模擬拖拽效果篇

    其實javascript本身是具有原生拖放功能的,但是由于兼容性問題,以及功能實現(xiàn)的方式,用的不是很廣泛。javascript動畫廣泛使用的還是模擬拖拽。本文將詳細介紹javascript的模擬拖拽,有需要的可以參考借鑒。
    2016-09-09
  • 原生js實現(xiàn)半透明遮罩層效果具體代碼

    原生js實現(xiàn)半透明遮罩層效果具體代碼

    半透明遮罩層效果基本上都是使用插件實現(xiàn)的,下面為大家分享下使用原生js實現(xiàn)半透明遮罩效果,感興趣的朋友可以參考下哈,希望對你熟悉原生js有所幫助
    2013-06-06
  • 如何利用Javascript生成平滑曲線詳解

    如何利用Javascript生成平滑曲線詳解

    相信大家都遇到過,在各種圖表框架中經常會有將一段折線平滑的需求,不僅能給用戶帶來一種柔和的感覺,還能美化界面,讓折線看起來沒那么生硬,這篇文章主要給大家介紹了關于如何利用Javascript生成平滑曲線的相關資料,需要的朋友可以參考下
    2021-07-07
  • JS代碼實現(xiàn)根據時間變換頁面背景效果

    JS代碼實現(xiàn)根據時間變換頁面背景效果

    這篇文章主要介紹了JS代碼實現(xiàn)根據時間變換頁面背景效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友一起看下吧
    2016-06-06
  • js fromCharCode輸出26個字母的代碼

    js fromCharCode輸出26個字母的代碼

    這個代碼比較簡單主要是用到了fromCharCode的特性
    2008-11-11

最新評論

成都市| 临颍县| 五台县| 大厂| 罗源县| 迁西县| 岳阳市| 新晃| 禄丰县| 翁源县| 翁源县| 无棣县| 肥城市| 莆田市| 酒泉市| 阿鲁科尔沁旗| 武平县| 乐平市| 常熟市| 阳谷县| 宜兴市| 伽师县| 无棣县| 南投县| 湛江市| 武功县| 丁青县| 东港市| 宜良县| 黔西县| 柳河县| 东宁县| 深州市| 龙口市| 清丰县| 赫章县| 安阳县| 庆云县| 灵石县| 苏州市| 荃湾区|