#很是实用的方法,推荐使用#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 方法的;浏览器