this跟作用域其实没有关系
var name = "Global name";
function funcA(){
var name = "FuncA name";
return function(){
alert(this.name);
};
}
funcA()(); //Global name
不要想象this会指向上层作用域的对象,其实this就是简单指向调用这个函数的对象。
因为所有在全局定义域中定义的变量或函数其实会成为window的成员,所以上面就显示“Global name”了。