首先这个题是我自己学习闭包以及上下文,作用域等概念的时候琢磨出来的,主要是对第二个this不太理解:
var obj = {
fn1:function(){
console.log(this);
var that = this;
var f=function(){
console.log(that);
console.log(this);
};
return f;
}
};
obj.fn1()();
第一个this和后面的that我基本能理解了,但是最后一个this是window我不太明白,按照对闭包的理解,这个this不是应该和that是相同的吗?
最后一个 this 是 obj.fn1() 返回的,可以理解为 f = obj.fn1(),所以就是 f(),自然就是 window 对象了,因为 f() 等价于 window.f()