#很是實用的方法,推薦使用#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 方法的;瀏覽器