THIS 作用范围不同  
alert(Name + ', ' + this.Name); this.Name是在函数InnerFoo()里 但函数InnerFoo()里没this.Name所以返回是undefined
function OuterFoo(){
    var Name = 'Outer Name';    function InnerFoo(){
        this.Name = 'Inner Name'; 
        alert(Name + ', ' + this.Name);
    }
    return InnerFoo;
}
var a=new OuterFoo();
a();
</script>
例子很能说明问题

解决方案 »

  1.   

    this在你这个function里没任何定义, 即不指html内某个元素,又不指function某个函数
    <script>
    function OuterFoo(){
        this.Name = 'Outer Name';    function InnerFoo(){
            var Name = 'Inner Name'; 
            alert(Name + ', ' + this.Name);
        }
        return InnerFoo;
    }
    var a=new OuterFoo(); //实例化
    你在上面的function OuterFoo()定义了Name, 实例化后才能使用其属性
    alert(a.Name); //这样才能alert出Name
    a();
    </script>应该是这样的吧
      

  2.   

        function InnerFoo(){
            var Name = 'Inner Name'; 
            alert(Name + ', ' + this.Name);
        }里面的this.Name都不存在
      

  3.   

    2楼说的“alert(a.Name); //这样才能alert出Name ”  是错的吧
    我试了下 alert(a.Name); 出来的也是undefined啊
      

  4.   

    function OuterFoo(){
        this.Name = 'Outer Name';
    var wrapper=this;//======
        function InnerFoo(){
            var Name = 'Inner Name'; 
            alert(Name + ', ' + wrapper.Name);
        }
        return InnerFoo;
    }
    var a=new OuterFoo();
    a();
      

  5.   

    <script type="text/javascript">//this,始終指向調用它的對象Name = 'Win';function OuterFoo(){
        this.Name = 'Outer Name';
        function InnerFoo(){
            alert(this.constructor);
            alert(this.Name);
        }
        return InnerFoo;
    }
    var a = new OuterFoo();
    alert(a);
    a();
    function InnerFoo(){
        alert(this.constructor);
        alert(this.Name);
    }InnerFoo();</script>
      

  6.   

    new 一个  明白?>