我正在用Javascript玩不同的设计模式。这家工厂把我搞糊涂了
我正在玩不同的JS设计模式,我试图修改一些我在那里看到的示例。我看到了一个xhr工厂的示例,它有几个嵌套的try/catch语句,它们相互嵌套我正在用Javascript玩不同的设计模式。这家工厂把我搞糊涂了,javascript,factory,self-reference,Javascript,Factory,Self Reference,我正在玩不同的JS设计模式,我试图修改一些我在那里看到的示例。我看到了一个xhr工厂的示例,它有几个嵌套的try/catch语句,它们相互嵌套 try{ ... }catch(e){ try{ ... }catch(e){} } 我想我可以做一个自调用函数。然而,我似乎不知道它应该如何工作。有人有什么建议吗 例如: [更新]: 案例关闭。将尝试循环更改为: for(var i = 0, l = instances.length; i < l; i ++) {
try{
...
}catch(e){
try{
...
}catch(e){}
}
我想我可以做一个自调用函数。然而,我似乎不知道它应该如何工作。有人有什么建议吗
例如:
[更新]:
案例关闭。将尝试循环更改为:
for(var i = 0, l = instances.length; i < l; i ++) {
try{
var obj = instances[i].getInstance();
return instances[i];
}catch(e){ }
}
不太确定这里的问题是什么?我尝试了这个示例,但没有看到问题是什么?该示例返回一个错误XHR未定义。我的循环在1次尝试时停止。哦,我没想到会发生这种事。我得到了一个xmlhttprequest对象。
var XHR = (function(){
var ins = [
function(){return new XMLHttpRequest();},
function(){return new ActiveXObject('Msxml2.XMLHTTP');},
function(){return new ActiveXObject('Microsoft.XMLHTTP');}
],i,tmp;
return (function tryIns(i){
i = i || 0;
while(i < ins.length){
try{tmp = ins[i]();}
catch(e){i++; tryIns(i);}
finally{return ins[i];}
}
throw new Error("Your browser doesn\'t support Ajax requests");
})();
})();