关于XMLHttpRequest的疑问!!! - Web 开发 / Ajax
关于浏览器的不同 获得 XMLHttpRequest时 要做一些判断
其中 if(window.XMLHttpRequest){
XmlHttp = new XMLHttpRequest(); 如果if成立 则新创建一个实例。。
}
.......
......
......
window.XMLHttpRequest 中的 XMLHttpRequest 和 new XMLHttpRequest()中的 XMLHttpRequest 含义应该不一样吧。
我感觉 第一个XMLHttpRequest 应该 表示一个对象实例 的引用 (相当于Java中 引用了对象的变量)
第二个XMLHttpRequest 应该 表示一个对象 ( 相当于Java中的 类)
那么就是说 windows.XMLHttpRequest 中的XMLHttpRequest 是 通过 XMLHttpRequest = new XMLHttpRequest()来的吧!
既然windows.XMLHttpRequest 已经 引用了 一个 XMLHttpRequest 对象实例
那么 if(window.XMLHttpRequest){
XmlHttp = window.XMLHttpRequest;
}
这么做也是可以的吧 。
上面都是 自己的 想法 不知道 window.XMLHttpRequest 具体的 含义是什么
请教 !!! 自己的JavaScript 功底 太烂了
------解决方案--------------------因为JS中任何对象都有本身存在的范围
window.XMLHttpRequest 说明XMLHttpRequest 是存在于window的域中
至于直接new XMLHttpRequest 是因为window这个全局域是可以不写的 一个变量在当前域中不存在 则环境默认会在WINDOW域中查找该变量
所以没有局部的XMLHttpRequest的变量的情况下 window.XMLHttpRequest ==XMLHttpRequest
至于 XmlHttp = window.XMLHttpRequest 和 XmlHttp = new XMLHttpRequest()则完全不是一个概念
这个你可以看下new操作符的语法是什么意思
------解决方案--------------------用firebug看看这两个区别不行么
------解决方案--------------------IE把XMLHTTPREQUEST当成activeX
------解决方案--------------------IE吧XMLHttpRequest看做是个ActiceX对象,而其他浏览器(如Firefox)把它看做一个本地的javascript对象,从而使用本地javascript或使用ActiceX来创建XMLHttpRequest实例,也就是当IE支持ActiceX就用ActiceX创建,不然就用本地javascript来创建
------解决方案--------------------