zoukankan      html  css  js  c++  java
  • 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 方法的;

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

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/xiaochechang/p/5987081.html
Copyright © 2011-2022 走看看