var name='abc';
            
            var a={
             name:'bbb',
                  sayName:function()
                  {
                    return function()
                     {
                     return this.name;
                     }
                  }
            }
            
            alert(a.sayName()()); //显示为空
匿名函数的this一般是指向全局作用域的,
为什么显示的不是abc呢?求指点

解决方案 »

  1.   

     var a={
                    name:'bbb',
                      sayName:function()
                      {
                           return function()
                         {
                            return this.name;
                         }
                      }
                }
    没执行完,就输出了
      

  2.   

    你用的是什么浏览器才弹出空啊,或许有些新版本的浏览器实现了原来的BUG,那弹出空就对了
      

  3.   

    没有问题,正常弹出结果"abc";IE9/chrome/firefox 三方浏览器下测试均正常~
      

  4.   

    在全局作用域中执行 alert( this.name )this = global输出 'abc'
      

  5.   

    额,我用的是IE6,
    要是用高版本浏览器的话,不太好,
    因为,浏览器越高级,隐藏的BUG就越多,我习惯用低级别的浏览器来测试..
      

  6.   


    <script type="text/javascript"> var name='abc';
                
                var a={
                   name:'bbb',
                      sayName:function()
                      {
                           return function()
                         {
                            return this.name;
                         }
                      }
                }
                
                alert(a.sayName()());    //ie8 firefox均正常显示abc
    </script>
      

  7.   

    你的this指向的是全局作用域是不错,你的name呢,是全局作用域下的属性么? this应该是指向了window对象了,你的name该写成这样window.name