JavaScript 分支函數 (解決兼容問題更好的方法)

#很是實用的方法,推薦使用#html

 

分支函數的做用是:能夠解決兼容問題 if 或者 else 的重複判斷的問題,咱們通常的作法是:根據兼容的不一樣寫 if,else 等,這些判斷來實現兼容,可是這樣明顯就有一個缺點,每次執行這個函數的時候,都須要進行 if 和 else 的檢測,效率明顯不高,咱們如今使用分支函數來實現當初始化的時候進行一些檢測,在以後的運行代碼過程當中,代碼就無需檢測了;ajax

 

複製代碼
// 咱們先來看看傳統的封裝ajax請求的函數
//建立XMLHttpRequest對象:
var xmlhttp;
function createxmlhttp(){
    if (window.XMLHttpRequest){
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else{
      // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
}
// 下面咱們看看分支函數代碼以下:
var XHR = (function(){
    var standard = {
        createXHR : function() {
            return new XMLHttpRequest();
        }
    };
    var oldActionXObject = {
        createXHR : function(){
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
    };
    var newActionXObject = {
        createXHR : function(){
            return new ActiveXObject("Msxml2.XMLHTTP");
        }
    };
    if(standard.createXHR) {
        return standard;
    }else {
        try{
            newActionXObject.createXHR();
            return newActionXObject;
        }catch(e){
            oldActionXObject.createXHR();
            return oldActionXObject;
        }
    }
})();
console.log(XHR.createXHR()); //xmlHttpRequest對象
複製代碼

 

上面的代碼就是分支函數,分支的原理是:聲明幾個不一樣名稱的對象,且爲該不一樣名稱對象聲明一個相同的方法,而後根據不一樣的瀏覽器設計來實現,接着開始進行瀏覽器檢測,而且根據瀏覽器檢測來返回哪個對象,不論返回的是哪個對象,最後它一致對外的接口都是 createXHR 方法的;瀏覽器

 

參考:推薦分支函數 (解決兼容問題的更好的方法)函數

相關文章
相關標籤/搜索