你能解释我为什么会这样做吗?
未捕获RangeError:超出最大调用堆栈大小
在这个例子中.什么是行动的顺序?
"use strict"; let myClass = class myClass{ constructor(name){ this.name = name; } get name() { return this.name; } set name(name){ this.name = name; } } let myObj = new myClass("John");
Jeroen.. 8
你从setter调用setter,无限循环.
set name(name) { this.name = name; // <-- `this.name` calls the `set`ter again }
您应该使用某种不同名称的支持变量:
"use strict";
let myClass = class myClass {
constructor(name) {
this.name = name;
}
get name() {
return this._name;
}
set name(name) {
this._name = name;
}
}
let myObj = new myClass("John");
console.log(myObj);
令我惊讶的是,将变量私有化为一个类并非易事.
你从setter调用setter,无限循环.
set name(name) { this.name = name; // <-- `this.name` calls the `set`ter again }
您应该使用某种不同名称的支持变量:
"use strict";
let myClass = class myClass {
constructor(name) {
this.name = name;
}
get name() {
return this._name;
}
set name(name) {
this._name = name;
}
}
let myObj = new myClass("John");
console.log(myObj);