首頁  >  文章  >  web前端  >  javascriptthis的用法是什麼

javascriptthis的用法是什麼

青灯夜游
青灯夜游原創
2021-04-26 15:09:217370瀏覽

this的用法:1、純粹的函數呼叫中,this用來代表全域物件;2、函數作為物件方法呼叫時,this用來代表上級物件;3、作為建構函式呼叫時,this用於代表新物件;4、apply呼叫時,this用於代表apply()函數的第一個參數。

javascriptthis的用法是什麼

本教學操作環境: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn