看到很多资料说,哪个对象调用了这个函数,这个函数中的 this 就指向这个对象。
下面这个例子中,foo这个函数,是通过 foo()这个语句调用的,为什么this 指向全局?并没有 Window.foo( )这样由全局对象调用呀?
求教,多谢!
var x = 10;
var obj = {
x: 20,
f: function () {
var foo = function (){
console.log(this.x);
}
foo();
}
};
obj.f(); //10
楼上讲的有点问题,foo不是全局变量,简单点来判断(非严格模式)就是:
1.当一个函数没有被指定上级对象的时候,this指向window
2.当一个函数有被指定上级对象的时候,this仅指向最靠近的上级(父)对象
如 foo.fn.o() , o里面的this指向fn