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

标签 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,

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

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

在这里,他们基本上是说,如果您想创建类似的对象,请使用此对象构造函数。

首先我注意到他们使用关键字 this在函数代码中。我有点困惑,然后我用谷歌搜索他们为什么使用 this关键字而不是简单地使用变量。

这有点有意义,因为我通过谷歌搜索了解到的是这个,那个this关键字指的是我用关键字 new 启动的对象。 ,

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

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

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

最佳答案

简而言之

使用var您在构造函数中声明局部变量,它将无法在构造函数外部访问

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

在下面的示例中,我们无法在调用函数中访问 a,但通过使用 this 我们可以访问 b

Es6 级

假设您声明测试类

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";
}

关于javascript - 为什么在 Javascript 对象构造函数中使用 this 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504587/

相关文章:

c# - window.onbeforeunload 在文本框中丢失值

javascript - js 对象到 clojurescript 矢量/ map

javascript - 所选选项未显示在 html 中

javascript - 添加变量而不是用 jquery 每个连接

javascript - 打包/缩小多个 javascript 文件的最简单方法?

javascript - 方法中可能无限递归吗?

javascript - 按类别查找最接近的跨度到 tr 中

javascript参数对象引用未知

javascript - 字典在 python 中查找到 javascript

Javascript - 传递包含变量的 html 字符串作为参数