我目前正在试验 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/