gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:25:03 26 4
gpt4 key购买 nike

如果我必须在没有 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 block 内调用对象构造函数,而不是使用功能检测。我想象一个try/catch比简单的 if 检查慢。有什么好处?

最佳答案

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

关于javascript - 为什么 jQuery 将 XHR 对象创建包装在 try/catch 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com