[ERROR] : RangeError: Maximum call stack size exceeded

  • 出現(xiàn)這種錯誤一般是因?yàn)椴粩喈a(chǎn)生大量數(shù)據(jù)占滿堆棧內(nèi)存
  • 我今天的案例在于Class中使用gettersetter方法時(shí),出現(xiàn)如上報(bào)錯
    后來了解到原因:
class Example{
    constructor(a, b) {
        this.a = a; // 實(shí)例化時(shí)調(diào)用 set 方法
        this.b = b;
    }
    get a(){
        console.log('getter');
        return this.a;
    }
    set a(a){
        console.log('setter');
        this.a = a; // 自身遞歸調(diào)用
    }
}
let exam = new Example(1,2); // 不斷輸出 setter ,最終導(dǎo)致 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 , 不會調(diào)用 getter 方法
console.log(exam._a); // 1, 可以直接訪問

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,621評論 1 32
  • 1.設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式,并簡要敘述?設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,294評論 0 12
  • 作者:clearbug原文地址:http://www.cnblogs.com/craftsman-gao/p/48...
    IT程序獅閱讀 861評論 1 8
  • 前天是三八婦女節(jié),老師給我們布置了一樣作業(yè)幫媽媽做一件事洗衣服、拖地、洗碗...... 吃完飯我對媽媽...
    戰(zhàn)戰(zhàn)的小奶包閱讀 229評論 0 1
  • 他捂著悶的要窒息的胸口,倚著身后的大楊樹,慢慢的出溜著坐了下來。左手費(fèi)力的伸進(jìn)上衣口袋,他想掏救心丹,可是兜里...
    閆楓閱讀 734評論 0 4

友情鏈接更多精彩內(nèi)容