this跟作用域其實沒有關係
var name = "Global name";
function funcA(){
var name = "FuncA name";
return function(){
alert(this.name);
};
}
funcA()(); //Global name
不要想象this會指向上層作用域的對象,其實this就是簡單指向調用這個函數的對象。
因爲所有在全局定義域中定義的變量或函數其實會成爲window的成員,所以上面就顯示“Global name”了。