亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

惰性載入函數(shù)

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

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

借用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.");
  }
}

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

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();
}

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

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í)行的函數(shù),用以確定應該使用哪個函數(shù)。

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

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

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

相關文章

  • 微信小程序之自定義組件的實現(xiàn)代碼(附源碼)

    微信小程序之自定義組件的實現(xiàn)代碼(附源碼)

    最近在項目開發(fā)中,遇到好多雷同的頁面樣式,就想著可以將常用的功能模塊封裝成組件,方便在項目中使用和修改。這篇文章主要介紹了微信小程序之自定義組件的實現(xiàn)代碼(附源碼),需要的朋友可以參考下
    2018-08-08
  • javascript實現(xiàn)簡易的計算器

    javascript實現(xiàn)簡易的計算器

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)簡易的計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • canvas 繪制圓形時鐘

    canvas 繪制圓形時鐘

    本文主要分享了利用canvas如何繪制圓形時鐘的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript實現(xiàn)點擊切換功能

    JavaScript實現(xiàn)點擊切換功能

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)點擊切換功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 微信小程序實現(xiàn)商品數(shù)據(jù)聯(lián)動效果

    微信小程序實現(xiàn)商品數(shù)據(jù)聯(lián)動效果

    這篇文章主要介紹了微信小程序實現(xiàn)商品數(shù)據(jù)聯(lián)動效果,代碼很簡單,直接復制即可根據(jù)自己的需求去修改,對小程序商品數(shù)據(jù)聯(lián)動實例代碼感興趣的朋友一起看看吧
    2022-08-08
  • JS寫的數(shù)字拼圖小游戲代碼[學習參考]

    JS寫的數(shù)字拼圖小游戲代碼[學習參考]

    昨天沒事做,就用JS寫了個數(shù)字拼圖的小游戲,自娛自樂。 可惜關于逆序數(shù)的問題還沒解決,現(xiàn)在有時是拼不成的,大家見諒了。
    2008-10-10
  • js中用事實證明cssText性能高的問題

    js中用事實證明cssText性能高的問題

    首先要感謝 EtherDream 的不同觀點,在 巧用cssText屬性批量操作樣式 一篇中由于他的質疑態(tài)度使我做了進一步的測試。
    2011-03-03
  • 微信小程序控制臺提示warning:Now you can provide attr

    微信小程序控制臺提示warning:Now you can provide attr "wx:key" for a "w

    這篇文章主要介紹了微信小程序控制臺提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解決方法,簡單分析了wx:for警告提示相關解決方法,需要的朋友可以參考下
    2019-02-02
  • JavaScript實現(xiàn)聯(lián)動菜單特效

    JavaScript實現(xiàn)聯(lián)動菜單特效

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)聯(lián)動菜單特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • JS實現(xiàn)將數(shù)字金額轉換為大寫人民幣漢字的方法

    JS實現(xiàn)將數(shù)字金額轉換為大寫人民幣漢字的方法

    這篇文章主要介紹了JS實現(xiàn)將數(shù)字金額轉換為大寫人民幣漢字的方法,涉及javascript字符串與數(shù)組操作的相關技巧,需要的朋友可以參考下
    2016-08-08

最新評論