求助:js下面这行代码activeXString是什么 ? typeof arguments.callee.activeXString!="string"
functioncreateXHR(){if(typeofXMLHttpRequest!="undefined"){returnnewXMLHttpRequest();}...
function createXHR(){
if(typeofXMLHttpRequest!="undefined"){
return new XMLHttpRequest();
}else if(typeofActiveXObject!="undefined"){
if(typeof arguments.callee.activeXString!="string"){
var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"];
for(var i=0,len=versions.length;i<len;i++){
try{
new ActiveXObect(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch(ex){
//跳过
}
}
}
returnnewActiveXObect(arguments.callee.activeXString);
}else{
thrownewError("NoXHRobjectavailable.");
}
} 展开
if(typeofXMLHttpRequest!="undefined"){
return new XMLHttpRequest();
}else if(typeofActiveXObject!="undefined"){
if(typeof arguments.callee.activeXString!="string"){
var versions=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"];
for(var i=0,len=versions.length;i<len;i++){
try{
new ActiveXObect(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch(ex){
//跳过
}
}
}
returnnewActiveXObect(arguments.callee.activeXString);
}else{
thrownewError("NoXHRobjectavailable.");
}
} 展开
1个回答
展开全部
这里的activeXString是只createXHR对象的一个属性,自定义的.
总的来说activeXString一般只会有2个类型的值,除非有在其他地方赋值...
这2个类型的值是null,和versions数组中的某一个
这个函数的作用就是创建一个异步请求的对象.
从函数开始
if(typeofXMLHttpRequest!="undefined"){ 先判断了是否存在XMLHttpRequest
如果有 就直接返回他创造的对象.
}else if(typeofActiveXObject!="undefined"){ 然后判断了是否存在ActiveXObject
如果存在,则创建他的对象,但这个对象需要一个传入参数,如下:
new ActiveXObect(versions[i]); 需要versions数组中的某个项,数组的3个项分别对应3个版本.
从最高版本开始创建,如果创建失败,就被catch抓住,不处理,继续循环.
直到循环创建成功为止,然后给自己添加一个属性叫activeXString
arguments.callee.activeXString
arguments是javascript函数的内置对象,代表传入参数的集合
callee就代表对象本身即new createXHR()
如果3次循环完了都没找到,就会抛出
thrownewError("NoXHRobjectavailable.");
的错误.
其实你把
arguments.callee.activeXString
换成
this.activeXString
就容易理解了.
总的来说activeXString一般只会有2个类型的值,除非有在其他地方赋值...
这2个类型的值是null,和versions数组中的某一个
这个函数的作用就是创建一个异步请求的对象.
从函数开始
if(typeofXMLHttpRequest!="undefined"){ 先判断了是否存在XMLHttpRequest
如果有 就直接返回他创造的对象.
}else if(typeofActiveXObject!="undefined"){ 然后判断了是否存在ActiveXObject
如果存在,则创建他的对象,但这个对象需要一个传入参数,如下:
new ActiveXObect(versions[i]); 需要versions数组中的某个项,数组的3个项分别对应3个版本.
从最高版本开始创建,如果创建失败,就被catch抓住,不处理,继续循环.
直到循环创建成功为止,然后给自己添加一个属性叫activeXString
arguments.callee.activeXString
arguments是javascript函数的内置对象,代表传入参数的集合
callee就代表对象本身即new createXHR()
如果3次循环完了都没找到,就会抛出
thrownewError("NoXHRobjectavailable.");
的错误.
其实你把
arguments.callee.activeXString
换成
this.activeXString
就容易理解了.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询