this是Javascript語言的一個關鍵字。它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。
function test(){
this.x = 1;
}
隨著函數使用場合的不同,this的值會發生變化。但是有一個總的原則,那就是this指的是,調用函數的那個對象。進一步說,this和它聲明環境無關,而完全取決於他的執行環境。
以下有四種情況可以概括this的用法:
1.純粹的函數調用
function test(){
this.x = 1;
alert(this.x);
}
test();
執行函數test()之後會彈出什麼呢?很明顯,彈出1.
好,那麼將代碼改變一下,如下:
var x = 1;
function test(){
this.x = 0;
}
test();
alert(x);
執行函數test()之後接下來會彈出什麼呢?這題很明顯的是彈出0,因為函數test執行後裡面的this.x=0這個值將全局變量x原先的值1給覆蓋了(作用域鏈),所以最終輸出的是0,但是this的指向一直沒變,依舊指向window對象。