1.最常見的情況下,函數(shù)中的this是指向頂層對象window的。
列如這個下面這段代碼:
var a=2;
function showThis()
{
var a=1;
console.log(this.a);
}
showThis();

this指向了window對象
結(jié)果輸出的應(yīng)該是2.
2.如果this所在的函數(shù)是對象的屬性,那么默認(rèn)情況下this會指向該對象
如下面這段示例代碼:
var a=2;
var obj={
a:1,
fun:function(){
console.log(this.a);
}
};
obj.fun();

this指向了Object
最終輸出的結(jié)果應(yīng)該是1.
3.JavaScript函數(shù)call()或Apply()強(qiáng)制this指向第一個參數(shù)對象
如下面這一小段示例代碼:
var a=2;
var obj={
a:1,
fun:function(){
console.log(this.a);
}
};
var obj2={
a:3
};
obj.fun.call(obj2);

this指向Object
最終程序的輸出結(jié)果為3.是obj2的a屬性的值。
4 javascript通過new關(guān)鍵字創(chuàng)建的對象,函數(shù)中的this會在創(chuàng)建成功后指向被創(chuàng)建的對象
如下面的示例代碼:
var a=2;
function fun(a){
this.a=a;
}
var obj = new fun(3);
console.log(obj.a);

this指向fun
在函數(shù)執(zhí)行完之后,fun會賦值給obj,所以最終this指向obj,輸出結(jié)果為3.
this綁定的優(yōu)先級按照4,3,2,1的順序,new的優(yōu)先級最高。