分析this指向
在JavaScript中,函数内的this指向通常与以下3种情况有关。
① 构造函数内部的this指向新创建的对象。
② 直接通过函数名调用函数时,this指向的是全局对象window。
③ 如果将函数作为对象的方法调用,this将会指向该对象。
在上述3种情况中,第1种情况前面已经讲过,下面我们来演示第2、3种情况。
1 function foo() {
2 return this;
3 }
4 var o = {name: 'Jim', func: foo};
5 console.log(foo() === window); // 对应第2种情况,输出结果:true
6 console.log(o.func() === o); // 对应第3种情况,输出结果:true
从上述代码可以看出,对于同一个函数foo(),当直接调用时,this指向window对象,而作为o对象的方法调用时,this指向的是o对象。