gpt4 book ai didi

javascript - ES6 getters 和 setters 奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 17:59:49 26 4
gpt4 key购买 nike

我对 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

最佳答案

你在val setter中再次设置this.val,再次调用setter会导致无限递归,只需替换this.valthis._val。这将解决问题:)

class List {
constructor(next, val) {
this.next = next;
this._val = val;
}

set val(v) {
this._val = v;
}

get val() {
return this.name;
}
}

关于javascript - ES6 getters 和 setters 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com