如果我不用jQuery编写我自己的跨浏览器AJAX函数(我这样做),我会这样做:
var getXHR = function() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject('Microsoft.XMLHTTP');
}
}
但是在挖掘jQuery的source code时,我注意到了这一点:
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch( e ) {}
}
function createActiveXHR() {
try {
return new window.ActiveXObject( "Microsoft.XMLHTTP" );
}
}
然后:
createStandardXHR() || createActiveXHR();
为什么jQuery开发人员只是直接在try/catch
块内部调用对象构造函数,而不是使用特征检测。我想try/catch
比简单的if
检查慢。有什么好处?
答案 0 :(得分:0)
你的方法很好。
在阅读完代码之后,我认为jQuery的开发人员使用这个技巧在一个语句中创建Request对象并测试!this.isLocal && /^(get|post|head|put|delete|options)$/i.test( this.type ) &&
而没有错误。