我正在尝试编写自己的Xhr包装器作为练习。我正在跨浏览器工作,我遇到了这段代码,该代码为所有浏览器IE5.5 +启动了xhr对象

但是我个人并不真正了解如何现在使用此实例化的xhr对象。

请参见下面的代码:

(function () {
    try {
        return new(this.XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
    } catch (e) {}
})();


有人可以向我解释如何使用实例化的xhr对象吗?
也许出于我自己的学习经验,这(function (){})();的工作原理

如果不清楚,请告诉我,以便澄清!

最佳答案

您的表达式是IIFE-您定义一个函数并立即调用它。由于您没有将结果分配给任何东西,因此会丢失。所以要么

var req = (function () {
    try {
        return new(this.XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
    } catch (e) {}
})();


或(更具可读性)

function getRequest() {
    try {
        return new(this.XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
    } catch (e) {}
}

var req = getRequest()


虽然不确定所有这些ActiveXObject内容。

10-07 17:03