情况一:
如果一个函数中有this,但是没有被上一级调用,this指向window
例:
function a(){
var num='11';
console.log(this.num); //undefined
console.log(this) //window
}
a()
情况二:
如果一个函数有this,该函数被上一级调用,this指向上一级函数
例:
var o={
a:'11',
b:function(){
console.log(this.a); //11
console.log(this) //o
}
}
o.b();
情况三:
如果一个函数中有this,且该函数包含多个对象,尽管这个函数被最外层调用,this仍指向它的上一级对象
例:
var o=function(){
a:'11',
b:function(){
a:'22',
c:function(){
console.log(this.a);
console.log(this)
}
}
}
o.b.c();
//22 b{}
var j=o.a.b();
j()
//undefined window
赋值给变量j的时候并没有执行所以最终指向的是window