帮忙解读一段js代码

Changefish 2009-12-25 11:39:36
var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      return function(){
        return this.name;
      };

    }

  };

  alert(object.getNameFunc()());

为什么结果是The Window ?谢谢
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dandande 2009-12-26
  • 打赏
  • 举报
回复
跟着学
curacfyh 2009-12-26
  • 打赏
  • 举报
回复
首先,从
function(){
        return this.name;
      };
这个函数开始,寻找属性name,不存在,则向其父对象作用域中寻找。仍然不存在,则再往父对象中寻找。此时的父对象为object,即object.name
这里主要要明白,JavaScript中,作用域是Scope Chain。是逐层往上的。
zoutuo 2009-12-26
  • 打赏
  • 举报
回复
作用域问题,你可以这样想一下:
好比这里是一个JAVA类,var name = "the window"是一个全局变量
object是一个声明在某方法中的一个对象,这样就好理解了吧?而this.name就是指这个类中的name而并非object里的name。如果要取object中的name,直接用object.name就可以了。

个人见解,错误之处请高人执政!
王集鹄 2009-12-26
  • 打赏
  • 举报
回复
这里返回了一个函数
类似
var ret = function() {
return this.name;
}
alert(ret());


可以闭包实现你期望的结果
var name = "The Window";

var object = {
name : "My Object",
getNameFunc : function(){
var self = this;
return function(){
return self.name;
};

}

};

alert(object.getNameFunc()());

wangyuehong516 2009-12-26
  • 打赏
  • 举报
回复
学习了
zoutuo 2009-12-26
  • 打赏
  • 举报
回复

<script>
var name = "The Window";

function a(){
 return this.name;
}

var object = {
  name : "My Object",
  getNameFunc : function(){ return a(); }

};

alert(object.getNameFunc());
</script>


这么写你再试试
Changefish 2009-12-26
  • 打赏
  • 举报
回复
this不是指Object?

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧