var x = 20;
var a = {
x : 15,
fn : function(){
var x = 30;
return function(){
return this.x;
};
}
};
console.log((a.fn())()); // 20
console.log(a.fn()()); //20
console.log(a.fn().call(this)); //20
console.log(a.fn().call(a)); //15
1.(a.fn())()
a.fn()返回一个函数,()()函数自执行,this->window
2.a.fn()()
a.fn()相当于全局定义了一个函数,()再自己调用执行,this->window
3.a.fn().call(this)
此时是在全局环境执行,this->window
4.a.fn().call(a)
this->a