[ERROR] : RangeError: Maximum call stack size exceeded

  • 出现这种错误一般是因为不断产生大量数据占满堆栈内存
  • 我今天的案例在于Class中使用gettersetter方法时,出现如上报错
    后来了解到原因:
class Example{
    constructor(a, b) {
        this.a = a; // 实例化时调用 set 方法
        this.b = b;
    }
    get a(){
        console.log('getter');
        return this.a;
    }
    set a(a){
        console.log('setter');
        this.a = a; // 自身递归调用
    }
}
let exam = new Example(1,2); // 不断输出 setter ,最终导致 RangeError
class Example1{
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
    get a(){
        console.log('getter');
        return this._a;
    }
    set a(a){
        console.log('setter');
        this._a = a;
    }
}
let exam1 = new Example1(1,2); // 只输出 setter , 不会调用 getter 方法
console.log(exam._a); // 1, 可以直接访问

之后封锁属性使之不可修改的方法是Object.freeze()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,866评论 1 32
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 6,598评论 0 12
  • 作者:clearbug原文地址:http://www.cnblogs.com/craftsman-gao/p/48...
    IT程序狮阅读 4,189评论 1 8
  • 前天是三八妇女节,老师给我们布置了一样作业帮妈妈做一件事洗衣服、拖地、洗碗...... 吃完饭我对妈妈...
    战战的小奶包阅读 1,544评论 0 1
  • 他捂着闷的要窒息的胸口,倚着身后的大杨树,慢慢的出溜着坐了下来。左手费力的伸进上衣口袋,他想掏救心丹,可是兜里...
    闫枫阅读 3,904评论 0 4

友情链接更多精彩内容