2017-09-15 134 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