function createDocument(){
if(typeof arguments.callee.activeXString!="string"){
var versions=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument"],i,len;
for(var i=0;i<versions.length;i++){
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString=versions[i];
break;
}catch(error){
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
這是一個創建ActiveXObject對象的方法,它可以兼容IE的多個版本。開始對於這個方法中的arguments.callee.activeXString,非常不理解。爲什麼不能使用activeXString,或者是this.activeXString呢。通過查閱資料發現,arguments.callee.activeXString是創建當前函數的對象名爲activeXString。js函數即是對象,相當於創建了一個對象屬性。
1.使用arguments.callee.activeXString
執行兩次函數,只會檢查一次IE版本,第二次可以直接獲取arguments.callee.activeXString的值。
2.使用this.activeXString或者activeXString。
執行兩次函數,會檢查兩次IE版本,相當於存入activeXString的值,在每次運行後銷燬。