信手拈来 妙手偶得 » 日志 » 【整理】两个XMLHttpRequest对象创建函数的比较
【整理】两个XMLHttpRequest对象创建函数的比较
Junglesong 发表于 2007-04-01 15:14:19
函数一:
function createXmlHttpRequest (){
var httprequest=false;
if (window.XMLHttpRequest)
{ // if Mozilla, Safari etc
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject)
{ // if IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest;
}
函数二:
function createXmlHttpRequest (){
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){};
try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){};
try{return new XMLHttpRequest();}catch(e){};
alert("XmlHttpRequest not supported!");
return null;
}
评述:
两个函数都能达到创建XmlHttpRequest 对象目的,但第一个失之冗长驳杂,不必要的嵌套过多;第二个用四个字可以概括"大道至简",以很优雅的代码表述了目的,这种用try..Catch减少分支语句层次,和及时返回对象的代码风格值得程序员效仿.
function createXmlHttpRequest (){
var httprequest=false;
if (window.XMLHttpRequest)
{ // if Mozilla, Safari etc
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject)
{ // if IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest;
}
函数二:
function createXmlHttpRequest (){
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){};
try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){};
try{return new XMLHttpRequest();}catch(e){};
alert("XmlHttpRequest not supported!");
return null;
}
评述:
两个函数都能达到创建XmlHttpRequest 对象目的,但第一个失之冗长驳杂,不必要的嵌套过多;第二个用四个字可以概括"大道至简",以很优雅的代码表述了目的,这种用try..Catch减少分支语句层次,和及时返回对象的代码风格值得程序员效仿.
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
