麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > AJAX > 正文

JavaScript AJAX之惰性載入函數

2024-09-01 08:32:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript AJAX之惰性載入函數,惰性載入表示函數執行的分支僅會發生1次,是種JS的優化技巧,需要的朋友可以參考下
 
 

在JS中有些內存只需執行一遍即可,如瀏覽器類型檢測是最常用的一個功能,因為我們使用Ajax的時候需要檢測瀏覽器的內置的XHR。我們可以在第一次檢測的時候記錄下類型,往后在使用Ajax的時候就不需要再去檢測瀏覽器類型了。在JS中就算只有一個if也總比沒有if的語句效率要高。

普通Ajax方法

復制代碼代碼如下:

/**
 * JS惰性函數
 */
 
function ajax(){
    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,k=version.length;i<k;i++){
                try{
                    new ActiveXObject(versions[i]); 
                    arguments.callee.activeXString = versions[i];
                    break;
                }catch(ex){
                    throw ex;   
                }
            }
        }   
 
        return new ActiveXObject(arguments.callee.activeXString);
    }else{
        throw "No XHR object";  
    }
}

每次調用ajax()函數都要對瀏覽器內置的XHR檢查,效率不高。

 

使用惰性方式的方法

 

復制代碼代碼如下:

/**
 * JS惰性函數
 */
 
function ajax(){
    if(typeof XMLHttpRequest != "undefined"){
        ajax = function(){
            return new XMLHttpRequest();    
        };
    }else if(typeof ActiveXObject != "undefined"){
        ajax = function(){
            if(typeof arguments.callee.activeXString != "string"){
                var versions = ["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"];    
 
                for(var i=0,k=version.length;i<k;i++){
                    try{
                        var xhr = new ActiveXObject(versions[i]);   
                        arguments.callee.activeXString = versions[i];
                        return xhr;
                    }catch(ex){
                        throw ex;   
                    }
                }
            }   
 
            return new ActiveXObject(arguments.callee.activeXString);
        }
    }else{
        ajax = function(){
            throw "No XHR object";  
        }
    }
 
    return ajax();
}

在第二個惰性方法中if的每個分支都會為ajax()變量賦值,有效覆蓋了原有函數,最后一步調用新的函數。下一次調用的ajax()的時候,就直接調用變量。

 

優化重點

要執行特定代碼只有實際調用才執行,而某些JS庫一開始就檢測瀏覽器,預先設置好。

由于加了復雜的判斷所以首次運行速度慢,但后邊的多冊運行的效率會更快。
 
有時候寫代碼久了,不能一成不變,要經常思考怎樣才能使程序運行的更快,更有效率。這樣的思考下寫出來的程序才是精裝,而不會產生多余的垃圾代碼。這也不是簡單OO就能一刀切,實際上代碼很多地方都是活的,人更是活的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成年性h版影视中文字幕 | 久久精品中文字幕一区二区 | 九九热在线视频观看这里只有精品 | 91久久91久久精品免观看 | 国产精品高潮视频 | 激情综合婷婷久久 | www.com超碰| 黄色男女视频 | 桥本有菜免费av一区二区三区 | 久久草草亚洲蜜桃臀 | 中国老女人一级毛片视频 | 中午字幕无线码一区2020 | 久久久久久久免费精品 | 久久久久久久99 | 久久中文一区 | 久久精品国产清自在天天线 | 亚洲视频观看 | 精品久久999 | 久久国产精品一区 | 一区二区视频在线看 | 亚洲第一成av人网站懂色 | 法国性xxx精品hd | 丰满年轻岳中文字幕一区二区 | 爱操影视 | 午夜电影视频 | 91久久国产综合久久91猫猫 | 特黄一区二区三区 | 欧美1 | 性看小视频 | 国产亚洲在线 | 免费毛片视频 | 国产视频在线观看一区二区三区 | 日本在线观看一区二区 | 国产午夜亚洲精品午夜鲁丝片 | 色羞羞 | 亚洲免费资源 | av电影在线免费 | 999精品久久久 | 一本色道久久99精品综合蜜臀 | 撅高 自己扒开 调教 | 天天夜干|