var a={
name:"xuxu",
getname:function(){
console.log(this);
var b=function(){
console.log(this);
}
b();
console.log(Window);
}
}
a.getname();
以上代码中,getname中的this是指向a的我能理解,但是它里面的b函数中的this指向window是怎么理解呢,为什么b函数是由window调用呢
当函数不作为对象的属性被调用时,也就是我们常说的普通函数方式,此时的this总是指向全局对象 也就是说一个对象的属性是一个函数,如果这个函数由这个对象调用,那么这个函数里面的this是指向这个对象的,但是这个函数内部的函数,是按上面这句话执行的,因为b函数不是直接当做a的属性调用的,它是普通调用因此默认指向window
函数发生嵌套的时候,this 是不会自动传递的,除非你手动传递,常见的:
当然也可以通过 apply,call 传递 this,等你遇到了再去查查,先留个印象;