求助: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.");

}

}
展开
 我来答
百度网友59d1d93f2
推荐于2018-05-07 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1063
采纳率:100%
帮助的人:687万
展开全部
这里的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
就容易理解了.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式