为什么在对象构造函数函数Javascript中使用此关键字

时间:2018-03-27 04:51:16

标签: javascript

var x = new y ('hello');

function y (mes){
    this.mes = mes;

    //x.mes = mes;
    //Why using object name will not work, with this it will work. 
    //please read the description what i am trying to ask.
}

问题说明

我正在学习Javascript,来自MDN,

我正在讨论使用Object的主题。链接是 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

我的主题是使用对象构造函数

在这里他们基本上说如果你想创建类似的对象使用这个对象的构造函数。

首先我注意到他们在功能代码中使用了关键字this。我有点困惑,比我谷歌它为什么他们使用this关键字而不是简单地使用变量。

有点理智,正如我在谷歌搜索中所理解的那样,this关键字是指对象意味着我使用关键字new启动的对象,

所以我认为我应该能够直接使用对象名而不是this

我将在函数之前启动对象,而不是我应该能够使用对象名称,它不起作用。

(我知道如果我这样做,它实际上打败了使用对象构造函数的目的,但不是重点,重点是我理解这在这种情况下意味着什么或为什么它没有的工作。)

1 个答案:

答案 0 :(得分:1)

简而言之

使用var在构造函数中声明局部变量,它不能在构造函数外部访问

this不是变量它是对象的属性,只要对象存活,this就会存活

在下面的示例中,我们无法在通话功能中访问a,但使用this我们可以访问b

Es6 Class

假设您声明了Test class

class Test{
  constructor(){
    var a = "hello";
    this.b = "world";
   }
  call(){
     console.log(t.b);
     console.log(t.a);
  }
}


var t = new Test();

console.log(t.b); //will print "world"

console.log(t.a); //will print "undefined"

与正常功能相同的概念

function Test() {
    var a = "hello";
    this.b = "world";
}