首頁  >  文章  >  web前端  >  js中的this關鍵字詳解_javascript技巧

js中的this關鍵字詳解_javascript技巧

WBOY
WBOY原創
2016-05-16 17:21:27979瀏覽

this是Javascript語言的一個關鍵字。
它代表函數運行時,自動產生的一個內部對象,只能在函數內部使用。例如,

複製程式碼 程式碼如下:

 〜function test(){

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

  }


隨著函數使用場合的不同,this的值會改變。但是有一個總的原則,那就是this指的是,呼叫函數的那個物件。

以下分為四種情況,詳細討論this的用法。
情況一:純粹的函數調用


這是函數最通常的用法,屬於全局性調用,因此this就代表全域物件Global。

請看下面這段程式碼,它的運作結果是1。 程式碼如下:


  〜 〜  test( .x = 1;

    alert(this.x);

  }

  test(); // 1

  test(); // 1

複製程式碼 程式碼如下:

  function test(){

    alert(this.x);

  alert(this.x);

  }

運行結果還是1。再變一下:


複製代碼 代碼如下:
  var x = 1;

  function test(){

    this.x = 0;

  }


  }


情況二:作為物件方法的調用
函數還可以作為某個物件的方法調用,這時this就指這個上級物件。


複製程式碼 程式碼如下:
 、function test(>

  〜 〜) test( (this.x);

  }

  var o = {};

  o.x = 1;

  o.x = 1;

  o.m(); // 1


情況三作為建構子呼叫
所謂建構函數,就是透過這個函數產生一個新物件(object) 。這時,this就指這個新物件。


複製程式碼 程式碼如下:
  〜  㜀〜 㜀〜 㜀〜 㜀㜀 㜀㜀㜀 㜀㜀 㜀㜀㜀 㜀㜀 ) .x = 1;

  }

  var o = new test();

  alert(o.x); // 1
『結果為1。為了顯示這時this不是全域對象,我對程式碼做一些改變:



複製程式碼

    this.x = 1;

  alert(x); //2


運行結果為2,表示全域變數x的值根本沒改變。


情況四apply呼叫


apply()是函數對象的一個方法,它的作用是改變函數的呼叫對象,它的第一個參數就表示改變後的呼叫這個函數的物件。因此,this指的就是這第一個參數。



複製程式碼
程式碼如下:

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


apply()的參數為空時,預設為全域物件。因此,這時的運行結果為0,證明this指的是全域物件。

如果把最後一行程式碼修改為 




複製程式碼


程式碼如下:


程式碼如下:



碼>o.m.apply(o); //1

運行結果變成了1,證明了這時this代表的是對象o
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn