手写 shallowReadonly 与 readonly
admin
2024-04-01 22:31:49
0

//就是在set那里设置不改变原来的数据,直接return
        const readonlyHandler = {
          get (target, key) {
            if (key==='_is_readonly') return true
        
            return Reflect.get(target, key)
          },
        
          set () {
            console.warn('只读的, 不能修改')
            return true
          },
        
          deleteProperty () {
            console.warn('只读的, 不能删除')
            return true
          },
        }
        
        /* 
        自定义shallowReadonly
        */
        function shallowReadonly(obj) {
          return new Proxy(obj, readonlyHandler)
        }
        
        /* 
        自定义readonly
        */
        function readonly(target) {
          if (target && typeof target==='object') {
            if (target instanceof Array) { 
                // 应为数组里面可能有引用类型数据所以要便利
              target.forEach((item, index) => {
                target[index] = readonly(item)
              })
            } else { // 对象也如此
              Object.keys(target).forEach(key => {
                target[key] = readonly(target[key])
              })
            }
            const proxy = new Proxy(target, readonlyHandler)
        
            return proxy 
          }
        
          return target
        }
        
        /* 测试自定义readonly */
        /* 测试自定义shallowReadonly */
        const objReadOnly = readonly({
          a: {
            b: 1
          }
        })
        const objReadOnly2 = shallowReadonly({
          a: {
            b: 1
          }
        })
        
        objReadOnly.a = 1
        objReadOnly.a.b = 2
        objReadOnly2.a = 1
        objReadOnly2.a.b = 2

相关内容

热门资讯

网红经济学家的瓜刷屏!粉丝听信... 7月15日消息,根据网传截图,一张任泽平VIP粉丝群的粉丝大骂任泽平的消息刷屏社区网络,该粉丝自称自...
时代锐评丨5家银行接连因“以贷... 本文来源:时代周报 作者:刘子琪来源:图虫近日,山阳农商行因以贷转存虚增存贷款规模、以贷还贷等违法违...
业绩暴增超280%!电子布巨头... 存储超级周期下,PCB板块也迎来了久违的爆发。作为PCB板块最大的受益者,“PCB三剑客”年内均取得...
世界杯最后一支广告,不论冠军 ... 不赌冠军,只敬要强。蒙牛世界杯最后一支广告,夯爆了。原创ⓒ新熵 新消费组作者丨栀子 编辑丨九黎世界杯...
启元T1正式亮相,全球首个可变... 近日,上纬新材正式发布旗下消费级具身智能品牌启元机器人的全新产品——启元T1(Transformer...
巨头竞逐“国民级AI应用” 巨... 率先做出“国民级AI应用”,正成为国内科技巨头们的竞逐焦点。字节想做“大豆包”。豆包App以chat...
盘中,直线拉升!两大利好突袭,... 脑机接口概念股突然异动!今日(7月16日)盘中,脑机接口概念股逆市走高,创新医疗直线拉升至涨停,海南...
长鑫科技上市在即,A股投资风向... 7月16日,长鑫科技正式开启申购。根据数据显示,长鑫科技本次发行价格为8.66元/股,发行价格对应的...
最后一条暗线断了,恒大歌舞团破... *此图由AI生成作者| 史大郎&猫哥来源| 是史大郎&大猫财经Pro恒大歌舞团,终于破产了,许家印的...
资产3.55万负债1.85亿!... 账面资产仅 3.55 万元,负债超 1.85 亿,恒大歌舞团进入破产清算近日,全国企业破产重整案件信...