首页 > 解决方案 > 理解 this 关键字

问题描述

所以我一直在研究JS中的关键字“this”,我不确定我是否完全理解清楚。因此,为了理解“this”关键字,我首先创建了一个 JS 对象,并查看是否可以根据使用 this 关键字执行的一些数学运算返回一个值。下面的代码是我最初的尝试:

let myObject = {
  objectFunc: function() {
    this.thing = 10;
  },
  addFunc: function(x) {
    let result = this.thing + x;
    return result;
  }
}

console.log(myObject.addFunc(20));

所以我希望这个控制台日志返回 30,但是我在控制台中得到一个“NaN”。有人可以向我解释为什么吗?并且还指向我一些更容易理解的不是上面链接的 MDN 的文档/解释?

标签: javascript

解决方案


你在正确的轨道上。它给你 NaN 的原因是“this.thing”还没有被定义。它仅在您myObject.objectFunc()第一次调用时定义。

let myObject = {
  objectFunc: function() {
    this.thing = 10;
  },
  addFunc: function(x) {
    let result = this.thing + x;
    return result;
  }
}

myObject.objectFunc()
console.log(myObject.addFunc(20));


推荐阅读