繁体   English   中英

jQuery为什么在try / catch中包装XHR对象的创建?

[英]Why does jQuery wrap XHR object creation in try / catch?

如果我必须编写没有jQuery的跨浏览器AJAX函数(我这样做),则可以这样做:

var getXHR = function() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    return new ActiveXObject('Microsoft.XMLHTTP');
  }
}

但是在浏览jQuery的源代码时 ,我注意到了这一点:

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检查要慢。 有什么好处?

你的方法很好。
阅读代码后,我认为jQuery的开发人员使用此技巧创建了Request对象并测试!this.isLocal && /^(get|post|head|put|delete|options)$/i.test( this.type ) &&在单个语句中没有错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM