在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指向這個新對象。