XMLHttpRequest:变量在函数中的影响

时间:2016-07-30 14:10:32

标签: javascript ajax

变量XMLHttpReqeust对以下代码有什么影响:

function getHTTPObject() {
    if (typeof XMLHttpRequest == "undefined") {
        XMLHttpRequest = function () {
            try {
                return new ActiveXObject('Msxml2.XMLHTTP.6.0');
            } catch (e) {

            }
            try {
                return new ActiveXObject('Msxml2.XMLHTTP.3.0');
            } catch (e) {

            }
            try {
                return new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e) {

            }
            return false;
        }
     }
     return new XMLHttpRequest();
}

我试图删除变量XMLHttpReqeust并且代码正常工作。它是否只是通常创建一个匿名函数?

2 个答案:

答案 0 :(得分:0)

您的功能目的

  

只是检查是否定义了符号XMLHttpRequest   浏览器或不作为一种手段,看看这个浏览器是否原生   是否支持Ajax调用。

此外我建议删除此代码,除非您有一些非常奇怪的要求支持IE6,因为不再需要它。

举个例子:

var x = 3;

console.log(typeof x);    // "number"
console.log(typeof y);    // "undefined"

// And, in any modern browser
console.log(typeof XMLHttpRequest);  // "function"

// In IE6
console.log(typeof XMLHttpRequest);  // "undefined"

此类检查是否存在 XMLHttpRequest 适用于非常旧的Microsoft浏览器(IE6及更早版本)不再需要,可以安全删除。

您的功能实际上在做什么

此功能始终创建XMLHttpRequest() 对象。

正如 if条件 if (typeof XMLHttpRequest == "undefined")将始终返回false

因此,每次调用此函数时都会执行此行

  

return new XMLHttpRequest();

并且每次都会创建一个 XMLHttpRequest 实例。

什么是XMLHttpRequest?

  

XMLHttpRequest对象用于与服务器交换数据   在幕后。它可以在不重新加载页面的情况下更新网页。它在页面加载后从服务器请求数据,并在页面加载后从服务器接收数据。

简单来说,它用于对服务器进行 AJAX 调用。您可以详细了解 XMLHttpRequest here

希望这会回答你的问题。

答案 1 :(得分:0)

此代码是一个polyfill,它将XMLHttpRequest支持添加到旧版本的Internet Explorer中。旧版本的IE使用专有的ActiveX接口而不是标准的XMLHttpRequest API。

IE 7及更高版本支持标准的XMLHttpRequest对象。除非您必须支持IE 6或以下,否则您应该可以取消此代码。

相关问题