javascript 类class设置访问器setter时出现Maximum call stack size exceeded错误
Maximum call stack size exceeded这个错误的意思是调用栈溢出,但是自己写的代码基本不可能出现。所以可能的原因是A调用了B,然后B再调用A,形成了循环调用。或者说是A自己调用自己,出现了循环。
// 原本的代码
class Person {
set name(newName) {
// console.log('in set name');
this.name = newName;
}
get name() {
return this.name;
}
constructor() {
this.name = 'azoux';
}
};
let p1 = new Person();
p1.name = 'mer';
console.log(p1.name);
上述代码中我给name属性设置了set和get访问器属性,但是在下方p1.name = 'mer'时却出现标题所说的Maximum call stack size exceeded这个错误
结果竟然是因为我代码中在set函数里对name进行修改的时候
this.name = newName,这一行代码会再次调用set
也就出现了Maximum call stack size exceeded的错误
只要把name改成name_即可
// 正确代码
class Person {
set name(newName) {
// console.log('in set name');
this.name_ = newName;
}
get name() {
return this.name_;
}
constructor() {
this.name = 'azoux';
}
};
let p1 = new Person();
p1.name = 'mer';
console.log(p1.name);