代码如下:
var name="Window";
var object={
name:"object",
getName:function (){
var a= function(){
return this.name;
};
console.log(a());
return a;
}
}
object.getName()();
运行结果:
Window
Window
我的问题在于console.log(a());
这一行。return a
后,是在全局作用域中执行的返回的匿名函数,所以this
的值是window
。但是我在getName
函数中直接执行a()
的话,根据this
的定义“ this 指向函数运行时的执行环境对象”,而每个函数执行时都会创建一个自己的执行环境,那么a()
执行时this
的值应该是getName
函数的环境对象,这样 a 函数内对this.name
的引用就应该得到undefined
。请问我的理解有什么问题呢?谢谢:)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.