看来这个问题好像不可能解决...
非 new 对象中, this 是 window
函数 中 函数 this 是指上一级....

解决方案 »

  1.   

    俺是错滴...
    <script type="text/javascript">
    //<![CDATA[
     function l1()
     {
      
      this._var = 1
      var tt = new l1_1();
      
      return tt;
      
      function l1_1()
      {
       
       this._var1 = 2;
       
       
       function l1_1_1()
       {
        alert(this._var)
       }
      }
     }
     
     var t = new l1();
     
     alert(t._var1)
    //]]>
    </script>
      

  2.   

    问题解决...<script type="text/javascript">
    //<![CDATA[
     // shawl.qiu JavaScript Document
     /*-----------------------------------------------------------------------------------*\
      * shawl.qiu Enum class v1.0
     \*-----------------------------------------------------------------------------------*/
     //---------------------------------begin class Enum()-------------------------------//
     function Enum()
     { // shawl.qiu code
      //------------------------------------begin public variable
      //------------------------------------end public variable
      
      //------------------------------------begin private variable
      //---------------begin about
      var Au = {};
       Au.Subject = "shawl.qiu Enum class";
       Au.Version = "v1.0";
       Au.Name = "shawl.qiu";
       Au.Email = "[email protected]";
       Au.Blog = "http://blog.csdn.net/btbtd/";
       Au.CreatedDate = "2007-7-31";
       Au.Update = {};
       Au.Update["1"] = "";
      //---------------end about
      
       var This = this;
       var Arg = arguments;  //------------------------------------begin private method
      
      function fGetAu()
      {
       return Au;
      }
      
      function fFatalError(sMsg)
      {// shawl.qiu code : void return
       if(!sMsg) sMsg = "发生致命错误!";
       throw new Error(sMsg);
      } // end function fFatalError  
      
      
      function fGetEnum()
      {
       var This = this;
       var ArgLen = Arg.length;
       var Index = 0;
       
       //alert(Arg.length)
       
       if(ArgLen>0) 
       {
        for(var i=0; i<ArgLen; i++)
        {
         Arg[i] += "";
         if(Arg[i].indexOf("=")>-1)
         {
          var TempAr = Arg[i].split("=");
          if(TempAr.length!=2) 
          {
           throw new Error(["枚举类型: ", Arg[i], " 初始化出错!"].join(''));
          } 
          var iTemp = parseInt(TempAr[1]);
          if(isNaN(iTemp))
          {
           throw new Error(["枚举类型: ", Arg[i], " 初始值出错!"].join(''));
          }
          
          This[TempAr[0]] = iTemp;
          
          Index = ++iTemp;
         }
         else
         {
          This[Arg[i]] = Index++;
         }
        }
       }
       else
       {
        fFatalError("枚举类型必须有初始参数!");
       }
       return This;
      }
      //------------------------------------end private method
      
      return new fGetEnum();
      
      //------------------------------------begin initer  //------------------------------------end initer
     } // shawl.qiu code
     //---------------------------------end class Enum()---------------------------------//
     var eu = new Enum("a=10", "b", "c");
     fTest(eu); function fTest(oEnum)
     { 
      for(var k in oEnum)
      {
       document.write("Key: ", k, "<br/>");
       document.write("oEnum[", k, "]: ", oEnum[k], "<p/>");
      }
      
      document.write("<hr/>");
     }
     
     var eu = Enum("a=10", "b", "c");
     fTest(eu); function fTest(oEnum)
     { 
      for(var k in oEnum)
      {
       document.write("Key: ", k, "<br/>");
       document.write("oEnum[", k, "]: ", oEnum[k], "<p/>");
      }
      
      document.write("<hr/>");
     }
    //]]>
    </script>