带有getter和setter的JavaScript类导致RangeError:超出了最大调用堆栈大小 [英] JavaScript classes with getter and setter cause RangeError: Maximum call stack size exceeded

查看:150
本文介绍了带有getter和setter的JavaScript类导致RangeError:超出了最大调用堆栈大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在尝试使用ECMA6课程。
我当前的课程如下所示

I am currently experimenting with ECMA6 classes. My current class looks like the following

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

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

When I am now creating a new Object by calling let playerObject = new Player(1); I receive the following error

...\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库有什么关系?为什么错误在同一行中多次?我只打电话一次。

What does this have to do with the mysql library? Why does the error is multiple times in the same line? I am only calling it once.

推荐答案

你的现金制定者称之为现金制定者,称之为现金 setter,它调用cashsetter ...

Your "cash" setter calls the "cash" setter, which calls the "cash" setter, which calls the "cash" setter...

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

Accessing the property setter by its own name inside the setter creates an infinite recursive function call.

这篇关于带有getter和setter的JavaScript类导致RangeError:超出了最大调用堆栈大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆