我与ES6 getter和setter混淆了。你能解释一下这里发生了什么,以及为什么我会发现堆栈溢出。
我在Node.JS v5.1.1上运行
'use strict';
class List {
constructor(next, val) {
this.next = next;
this.val = val;
}
set val(v) {
this.val = v;
}
get val() {
return this.name;
}
}
let res = new List(null, 1);
res.val = 3;
console.log(res);
这是输出:
/Users/o/code/test/test.js:9
set val(v) {
^
RangeError: Maximum call stack size exceeded
答案 0 :(得分:4)
您在 val setter 中再次设置this.val
,这会再次调用setter导致无限递归,只需将this.val
替换为{ {1}}。这将解决问题:)
this._val