• JavaScript 分支函数 (解决兼容问题更好的方法)


    #非常实用的方法,推荐使用#

    分支函数的作用是:可以解决兼容问题 if 或者 else 的重复判断的问题,我们一般的做法是:根据兼容的不同写 if,else 等,这些判断来实现兼容,但是这样明显就有一个缺点,每次执行这个函数的时候,都需要进行 if 和 else 的检测,效率明显不高,我们现在使用分支函数来实现当初始化的时候进行一些检测,在之后的运行代码过程中,代码就无需检测了;

    复制代码
    // 我们先来看看传统的封装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 方法的;

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

  • 相关阅读:
    BZOJ 2456 mode
    BZOJ 1041 [HAOI2008]圆上的整点
    东北育才 第6天和第7天
    POJ 3692 Kindergarten(最大团问题)
    KM算法及其应用
    UVA 11582 Colossal Fibonacci Numbers!(循环节打表+幂取模)
    ZOJ 3960 What Kind of Friends Are You?(读题+思维)
    POJ 2349 Arctic Network(最小生成树中第s大的边)
    HDU 1576 A/B(欧几里德算法延伸)
    NYOJ 1013 除法表达式(欧几里德算法+唯一分解定理)
  • 原文地址:https://www.cnblogs.com/xiaochechang/p/5987081.html
Copyright © 2020-2023  润新知