this指向的理解

關于this指向,是這幾天學微信小程序開發(fā)時才惡補的,所以理解的不是很全面,但是還是有很多的收獲的,所以想記錄下來。
this在js中相當于指針的作用,但是和指針不同的是他的只想對象是分不同情況有很多變化的。this就是函數(shù)運行時所在的環(huán)境對象。

一、單純的函數(shù)調(diào)用

var x = 2;
function first(){
console.log(this,x);
}
first();
此時輸出的結果為2,因為上面說過了,this就是函數(shù)運行時所在的環(huán)境對象,而這時函數(shù)的環(huán)境為全局對象,因此this指向的就是全局變量中的x,即為2。

二、作為對象的調(diào)用

function first(){
console.log(this.x);
}
var a = {};
a.x = 3;
a.p = first;
first();

此時例一輸出的結果為3,因為這是的函數(shù)是擁有上級函數(shù)的則此時的函數(shù)環(huán)境對象為其的上級函數(shù),則this指向a,因此為a.x的值。

三、構造函數(shù)

當構造一個新的函數(shù)時,這是this指向這個新的函數(shù)。(new)

function first(){
this.x = 1;
}
var a = new first();
a.x;
這是的結果為1,因為new了一個新的函數(shù),因此此時tihs的指向變成了new的這個新函數(shù),而不是全局變量。如下:

var x = 2;
function first(){
this.x = 1;
}
var a = new first();
a.x;
x;
此時打印x的話,其值為2。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容