2017-09-15 171 views
-1

我發現像這樣的代碼:什麼是「this.somevariable」意味着在JavaScript?

Function a(){ this.somevariable = ''; } 

和其他一些像這樣的代碼:

Function a(){ var somevariable = ''; } 

它們之間的區別是變量的聲明。我需要知道的this是什麼。它與var不同嗎?

+0

如果你想要t o瞭解更多信息,而不是每次運行下一個小問題時發佈到SO,而您經常會得到誤導性或不完整的答案,您應該在學習新語言時做計算曆史上的其他每個人即閱讀文檔,簡介,教程和博客文章。畢竟,如果你學習意大利語,每次碰到一個你不認識的單詞,或者你會學習一本意大利語的教科書,你會在意大利的網站上發帖嗎? – 2017-09-15 04:35:40

+0

爲了將來的參考,您不需要在您的問題中包括個人詳細信息,例如您學習語言的歷史或您的個人願望。它們無關緊要,分散注意力。說實話,沒人關心。也沒有必要在答案上留下「謝謝」意見。如果答案是有用的,那麼請立即投票。 – 2017-09-15 04:37:42

回答

-1

this是JavaScript中的關鍵字。

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

這種情況下this代表內部對象,只能在函數中使用。

隨着功能不同的場合,this的值會改變。但是有一個總體原則:this表示調用函數的對象。

案例1: 純函數調用:

這是函數的最常見的用途,屬於全球呼叫。 所以this只是全局對象的意思。

如:

function test(){ 
    this.m = 10; 
    alert(this.m); 
  } 
  test(); // there alert 10 

爲了證明this是一個全局對象:

var m = 10; 
  function test(){ 
    alert(this.m); 
  } 
  test(); // 10 

和:

var m = 10; 
  function test(){ 
    this.m = 0; 
  } 
  test(); 
  alert(m); // 10 

案例2: 作爲調用該函數的對象。

function test(){ 
    alert(this.m); 
  } 
  var obj = {}; 
  obj.m = 10; 
  obj.n = test; 
  obj.n(); // 10 

案例3:

作爲構造

function test(){ 
    this.m = 10; 
  } 
  var obj = new test(); 
  alert(obj.m); // 10 

爲了表明this是不是在這種情況下,一個全局對象:

var m = 10; 
  function test(){ 
    this.m = 1; 
  } 
  var o = new test(); 
  alert(m); //10 
+0

好的謝謝先生@aircraft –

+0

而不是寫在JS中的第九百萬個「this」的描述,最好將OP指向SO上現有的綜合答案,或者是一個權威的網頁,比如ashttps:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this。你可以在評論中這樣做,而不是回答。 – 2017-09-15 04:44:03