求助:js下面这行代码activeXString是什么 ? typeof arguments.callee.activeXString!="string"

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

}

}

第1个回答  推荐于2018-05-07
这里的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
就容易理解了.本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网