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 方法的;浏览器

 

参考:推荐分支函数 (解决兼容问题的更好的方法)函数

相关文章
相关标签/搜索