带有 getter 和 setter 的 JavaScript 类导致 RangeError : Maximum call stack size exceeded

标签 javascript node.js node-mysql

我目前正在试验 ECMA6 类。 我当前的类(class)如下所示

class Player {
  constructor(id) {
    this.id = id;
    this.cash = 350;
  }

  get cash() {
    return this.cash;
  }

  set cash(value) { // line 19
    this.cash = value; // line 20
  }
};

当我现在通过调用 let playerObject = new Player(1); 创建一个新对象时,我收到以下错误

...\node_modules\mysql\lib\protocol\Parser.js:82
        throw err;
              ^
RangeError: Maximum call stack size exceeded
    at Player.cash (player.js:19:11)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
    at Player.cash (player.js:20:15)
Press enter to exit

这和mysql库有什么关系?为什么错误在同一行中多次出现?我只调用一次。

最佳答案

您的“cash”setter 调用“cash”setter,后者调用“cash”setter,后者调用“cash”setter...

在 setter 中通过其自己的名称访问属性 setter 会创建一个无限递归函数调用。

关于带有 getter 和 setter 的 JavaScript 类导致 RangeError : Maximum call stack size exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484535/

相关文章:

javascript - 这是 date-fns 库中的错误吗,将日期转换为 UTC 格式给我错误的时间

JavaScript:制作和过滤/创建日期明智的对象数组。即Skype聊天历史 View

javascript - 让 React 组件像 DOM 组件一样触发更改事件

javascript - 在 Javascript 中输入数字之间的破折号

node.js - 我可以使用 module.export 导出异步函数的结果吗?

mysql - Nodejs node-mysql 查询结果数据类型

javascript - 什么时候用??和 ?作为 node-mysql 中用于构建查询的占位符?

javascript - 使用 app.get(..) 路由后 Express JS 'this' 未定义

javascript - 具有嵌套跨度的 jQuery .not() 和 .each()

javascript - jQuery post 和 OnClick 问题