我正在使用 6to5 编译器编写 ES6 类。我有一个非常基本的类,它调用 new Date()
在 setter 函数中,不幸的是导致了 maximum callstack exceeded
Chrome 异常,和 too much recursion
在 FireFox 中。
我不确定以下模式有什么问题,但调用了 new Date()
是异常的原因:
class DateTime {
constructor() {
this.active = null
}
set active() {
this.active = new Date()
}
get active() {
return this.active
}
}
new DateTime()
最佳答案
看起来属性 this.active
实际上是对 setter 方法的 self 引用。更正后的代码如下:
class DateTime {
constructor() {
this._active = null
}
set active( date ) {
this._active = new Date( date || Date.now() )
}
get active() {
return this._active
}
toString() {
return this._active.toString()
}
}
new DateTime()
基本上,赋值 this.active
在 ES6 上下文中的 setter 中将在属性可以赋值之前再次调用 setter。当再次调用 setter 时,这就变成了一个递归事件。
关于javascript - 6to5 es6 类,new Date() 触发超过最大调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28489018/