有关js闭包问题

因为在整理梳理闭包,看到这段代码,有两个问题:

var name = "The Window";   
var object = {   
  name : "My Object",   
  getNameFunc : function(){   
    return function(){   
      return this.name;   
   };   
  }   
};   
alert(object.getNameFunc()());  //The Window

① 输出The Window的原因是什么?~不是应该输出My Object吗?~this不是对象字面量object的作用域么;

②因为有了第一问,所以我把代码写在html文档中看看输出结果,代码如下(因为是测试用的,所以尽量简单):

<!doctype html>
<html>
    <head></head>
    <script>
        window.onload = (function() {
        var name = "The Window";   
      var object = {   
        name : "My Object",   
        getNameFunc : function(){   
          return function(){   
            return this.name;   
         };   
        }   
        };   
        alert(object.getNameFunc()()); 
    });
    </script>
    <body>
        
    </body>
</html>

弹出来的是一个没有内容的提示框。=。=这就奇怪了,难道window.onload用的不对吗?

噜噜哒
浏览 483回答 7
7回答

胡子哥哥

谢谢你的回答~不过,我疑问的不是“弹出的内容不是undefined ”,而是它根本没有内容弹出来,测试环境时chrome 30.0.1599.101 m

慕标5832272

@yuyangtudou: 我懂你的意思^_^~不过呢,我还想请教你,对于”var name = "The Window";”这应该算是全局变量,而对于全局变量那不都是挂在window对象下的吗?混乱了=。=

呼唤远方

@幻天芒: 谢谢
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript