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

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

  • 相关阅读:
    如何掌握所有的程序语言
    程序与证明
    卫星通信地面系统构成
    SCIP 环境搭建
    Homebrew install.sh
    macOS 内核之从 I/O Kit 电量管理开始
    matlab练习程序(空间椭圆拟合)
    多进程抢票加锁
    进程间数据传递
    队列用法
  • 原文地址:https://www.cnblogs.com/xiaochechang/p/5987081.html
Copyright © 2011-2022 走看看