国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS優化與惰性載入函數實例分析

2024-05-06 15:18:52
字體:
來源:轉載
供稿:網友

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

惰性載入函數

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

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

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

創建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.");    };  }})();            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 白水县| 兴城市| 察隅县| 赞皇县| 革吉县| 四会市| 江北区| 达拉特旗| 石景山区| 耒阳市| 丽江市| 务川| 郑州市| 门源| 综艺| 大庆市| 得荣县| 哈密市| 玉树县| 永顺县| SHOW| 和平县| 三都| 汕尾市| 洛川县| 长阳| 砀山县| 万州区| 普兰县| 潍坊市| 临颍县| 耒阳市| 交口县| 建德市| 乳山市| 河津市| 玉溪市| 东至县| 丰城市| 那坡县| 寻甸|