初学者,求大佬解答,为什么是this.window而不是my object;this不是应该指向object吗

var name = "The Window";   var object = {     name : "My Object",     getNameFunc : function(){       return function(){         return this.name;       };     }   };   alert(object.getNameFunc()());
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
追热 2019-03-28
  • 打赏
  • 举报
回复
;
引用 楼主 qq_41748192 的回复:
var name = "The Window";   var object = {     name : "My Object",     getNameFunc : function(){       return function(){         return this.name;       };     }   };   alert(object.getNameFunc()());
object.getNameFunc()返回的函数是一个匿名函数先叫它a函数吧。 执行object.getNameFunc()()时,a函数的调用方式是直接调用而不是作为object的属性调用的,所以它的this指向的是全局对象window(严格模式是undefined)。想要指向object改成箭头函数return ()=>this.name;就可以了
麦草CMS 2019-03-28
  • 打赏
  • 举报
回复
根据JavaScript中this的定义。    

getNameFunc : function(){
//getNameFunc是object的一个方法,这里的this指向object对象
      return function(){
//js有变量声明和函数声明提升,这里的匿名函数提升到object后面,只是在getNameFunc中调用,所以this指向window,而var name = "The Window";实则是window.name = "The Window";
        return this.name;

      };

    }
  • 打赏
  • 举报
回复
没有人吗

87,993

社区成员

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

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