在JavaScript中this有着极其重要的应用,所以理解this的用法十分必要。
关于this,大多时候存在着这样的误区,如下:
1、认为this指向函数自身
2、this指向函数的作用域
实际上,this是在函数执行时候绑定的,它的上下文取决于函数调用时的各种条件。
关于this 的绑定规则,大致分为以下几种:
1、函数调用:当没有明确的执行时,this指向全局对象。
例:
var name='tom';
var joo={
name:'joo',
show:function(){
alert(this.name);
}
}
var show=joo.show;
show();
2、隐式绑定:需考虑调用位置是否有上下文对象,或者说是否被某个对象拥有或者包含。对象属性引用链中只有最顶层或者说最后一层会影响调用位置。
例:
function foo(){
console.log(this.a);
}
var o1={
a:1,
foo:foo
} ;
var o2={
a:1,
foo:foo
};
o1.o2.foo();//1
3、显式绑定 :使用call()和apply()方法
4、new绑定:即作为构造函数调用,通过这个函数生成一个新对象,这时,this指向这个新对象。