JavaScript中this的用法

this 是 JavaScript 語言的一個關鍵字。app

它是函數運行時,在函數體內部自動生成的一個對象,只能在函數體內部使用。函數

function test() {
    this.x = 1;
}

上面代碼中,函數 test 運行時,內部會自動有一個 this 對象能夠使用。this

 

那麼,this 的值是什麼呢?

函數的不一樣使用場合,this 有不一樣的值。spa

總的來講,this 就是函數運行時所在的環境對象。code

 

下面分四種狀況,詳細討論 this 的用法。

 

1. 在通常函數方法中使用, this 指代全局對象

function test(){
    this.x = 1;
    alert(this.x);
}
test();    // 1

 

2. 做爲對象方法調用,this 指代上級對象

function test(){
    alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m();    // 1

 

3. 做爲構造函數調用,this 指代 new 出的對象

function test(){
    this.x = 1;
}
var o = new test();
alert(o.x);    // 1

 

運行結果爲1對象

爲了代表這時 this 不是全局對象,對代碼作如下改變:blog

var x = 2;
function test(){
    this.x = 1;
}
var o = new test();
alert(x);    //2

 

4. apply 調用 ,this指代第一個參數

var x = 0;
function test(){
    alert(this.x);
}
var o={};
o.x = 1;
o.m = test;
o.m.apply();    //0

//apply()的參數爲空時,默認調用全局對象。所以,這時的運行結果爲0,證實this指的是全局對象。若是把最後一行代碼修改成
o.m.apply(o);    //1
相關文章
相關標籤/搜索