代码如下:
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。请问我的理解有什么问题呢?谢谢:)
