關于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。