this的用法:1、純粹的函數呼叫中,this用來代表全域物件;2、函數作為物件方法呼叫時,this用來代表上級物件;3、作為建構函式呼叫時,this用於代表新物件;4、apply呼叫時,this用於代表apply()函數的第一個參數。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
this是 JavaScript 語言的一個關鍵字。
它是函數運行時,在函數體內部自動產生的一個對象,只能在函數體內部使用。
function test() { this.x = 1; }
上面程式碼中,函數test運行時,內部會自動有一個this物件可以使用。
那麼,this的值是什麼呢?
函數的不同使用場合,this有不同的值。總的來說,this就是函數運行時所在的環境物件。以下分四種情況,詳細討論this的用法。
情況一:純粹的函數調用
這是函數最通常的用法,屬於全域性調用,因此this就代表全域物件。請看下面這段程式碼,它的運行結果是1。
var x = 1; function test() { console.log(this.x); } test(); // 1
情況二:作為物件方法的呼叫
函數還可以作為某個物件的方法調用,這時this就指這個上級物件。
function test() { console.log(this.x); } var obj = {}; obj.x = 1; obj.m = test; obj.m(); // 1
情況三 作為建構子呼叫
所謂建構函數,就是透過這個函數,可以產生一個新物件。這時,this就指這個新物件。
function test() { this.x = 1; } var obj = new test(); obj.x // 1
運行結果為1。為了顯示這時this不是全域對象,我們會對程式碼做一些改變:
var x = 2; function test() { this.x = 1; } var obj = new test(); x // 2
運行結果為2,表示全域變數x的值根本沒變。
情況四 apply 呼叫
apply()是函數的一個方法,作用是改變函數的呼叫物件。它的第一個參數就表示改變後的呼叫這個函數的物件。因此,這時this指的就是這第一個參數。
var x = 0; function test() { console.log(this.x); } var obj = {}; obj.x = 1; obj.m = test; obj.m.apply() // 0
apply()的參數為空時,預設會呼叫全域物件。因此,這時的運行結果為0,證明this指的是全域物件。
如果把最後一行程式碼修改為
obj.m.apply(obj); //1
運行結果就變成了1,證明了這時this代表的是物件obj。
【推薦學習:javascript高階教學】
#以上是javascriptthis的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!