成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JS優(yōu)化與惰性載入函數(shù)的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了JS優(yōu)化與惰性載入函數(shù)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為彭陽(yáng)企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),彭陽(yáng)網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

惰性載入函數(shù)

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

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

借用JavaScript高級(jí)程序設(shè)計(jì)中的例子來(lái)說(shuō)明這兩種解決方案。

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

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ù)被調(diào)用時(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í)就指定適當(dāng)函數(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.");
    };
  }
})();

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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“JS優(yōu)化與惰性載入函數(shù)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:JS優(yōu)化與惰性載入函數(shù)的示例分析-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://jinyejixie.com/article14/ceooge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站網(wǎng)站內(nèi)鏈、關(guān)鍵詞優(yōu)化、定制開發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
东兴市| 红桥区| 呈贡县| 白水县| 砚山县| 石林| 恩平市| 青龙| 静乐县| 丰县| 东丰县| 尉氏县| 田东县| 贵州省| 县级市| 会泽县| 新泰市| 嘉定区| 句容市| 青龙| 巴南区| 南康市| 梅河口市| 华安县| 西贡区| 成都市| 台中县| 弥勒县| 浮梁县| 雅安市| 镶黄旗| 横峰县| 马尔康县| 潞城市| 祁阳县| 阿图什市| 河南省| 罗山县| 井冈山市| 丰顺县| 吉安县|