看题:
var myObject = {
foo:"xiaohu",
func:function(){
var that = this;
console.log(this.foo);//xiaohu
console.log(that.foo);//xiaohu
(function(){
console.log(this == window);//true
console.log(this.foo);//undefined
console.log(that.foo);//xiaohu
})()
}
}
myObject.func()
外部函数func中,this函数指向的对象是myObject,因此that指向myObject
在内部函数中,this不再指向myObject。其结果是,this.name没有在函数内部定义,相反指向到本地变量that保持的范围内,并且可以访问。内部函数的this将指向全局的window对象。