js对象属性

       

     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的值,在每次运行后销毁。

posted @ 2017-10-12 21:31  cheerupWoo  阅读(88)  评论(0编辑  收藏  举报