關(guān)于this指向传藏,是這幾天學(xué)微信小程序開發(fā)時(shí)才惡補(bǔ)的,所以理解的不是很全面屉更,但是還是有很多的收獲的徙融,所以想記錄下來(lái)。
this在js中相當(dāng)于指針的作用瑰谜,但是和指針不同的是他的只想對(duì)象是分不同情況有很多變化的欺冀。this就是函數(shù)運(yùn)行時(shí)所在的環(huán)境對(duì)象。
一萨脑、單純的函數(shù)調(diào)用
var x = 2;
function first(){
console.log(this,x);
}
first();
此時(shí)輸出的結(jié)果為2脚猾,因?yàn)樯厦嬲f(shuō)過(guò)了,this就是函數(shù)運(yùn)行時(shí)所在的環(huán)境對(duì)象砚哗,而這時(shí)函數(shù)的環(huán)境為全局對(duì)象龙助,因此this指向的就是全局變量中的x,即為2蛛芥。
二提鸟、作為對(duì)象的調(diào)用
function first(){
console.log(this.x);
}
var a = {};
a.x = 3;
a.p = first;
first();
此時(shí)例一輸出的結(jié)果為3,因?yàn)檫@是的函數(shù)是擁有上級(jí)函數(shù)的則此時(shí)的函數(shù)環(huán)境對(duì)象為其的上級(jí)函數(shù)仅淑,則this指向a称勋,因此為a.x的值。
三涯竟、構(gòu)造函數(shù)
當(dāng)構(gòu)造一個(gè)新的函數(shù)時(shí)赡鲜,這是this指向這個(gè)新的函數(shù)。(new)
function first(){
this.x = 1;
}
var a = new first();
a.x;
這是的結(jié)果為1庐船,因?yàn)閚ew了一個(gè)新的函數(shù)银酬,因此此時(shí)tihs的指向變成了new的這個(gè)新函數(shù),而不是全局變量筐钟。如下:
var x = 2;
function first(){
this.x = 1;
}
var a = new first();
a.x;
x;
此時(shí)打印x的話揩瞪,其值為2。