#非常实用的方法,推荐使用#
分支函数的作用是:可以解决兼容问题 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 方法的;
时间: 2024-08-10 15:11:41