当前位置: 首页 > article >正文

js | 作用域

前置知识

作用域

const对象怎么禁止修改

  • 方法一: Object.freeze
  • 方法二:defineProperty+递归,对于每个节点都有:writable:false
const obj={
    a1:{
        b1:{
            c1:'c1'
        }
    },
    a2:{
        b1:{
            c1:'c2'
        },
        b2:[]
    },
}

// solution1: Object.freeze(obj)
// Object.freeze(obj);
// obj.a2="new"
// console.log(obj)


function myFoo(obj){
    if(!obj){
        return;
    }
    Object.keys(obj).forEach(key=>{
        if(typeof obj[key]==="object"){
            Object.defineProperty(obj,key,{
                writable:false
            });
            myFoo(obj[key]);
        }
        
    });
}

myFoo(obj);
obj.a2="new"
console.log(obj)

http://www.kler.cn/a/391170.html

相关文章:

  • JavaScript高级程序设计基础(四)
  • 《DiffusionDet: Diffusion Model for Object Detection》ICCV2023
  • 人脸识别技术:从算法到深度学习的全面解析
  • vue3项目中内嵌vuepress工程两种实现方式
  • MySQL_第13章_视图
  • ❤React-JSX语法认识和使用
  • Day43 | 动态规划 :状态机DP 买卖股票的最佳时机买卖股票的最佳时机II
  • 020_Servlet_Mysql学生选课系统(新版)_lwplus87
  • 第 3 章 -GO语言 基本语法
  • 1Panel修改PostgreSQL时区
  • 高版本安装JAVA JDK没有JRE环境的解决办法
  • 恒创科技:什么是 RAID 3 ? RAID 3、4 和5之间有什么区别?
  • excel使用
  • 实习冲刺Day19
  • 【小程序】封装网络请求request模块
  • Pytorch如何将嵌套的dict类型数据加载到GPU
  • 【webrtc】RTX 重传包和NACK包
  • Secure Shell(SSH) 是一种网络协议
  • RDK X3 环形麦克风板录音与播放
  • STM32 设计的较为复杂的物联网项目,包括智能家居控制系统,涵盖了硬件和软件的详细设计。
  • 屏幕解析工具——OmniParser
  • vue内置方法总结
  • Qt中MainWindow的isVisible和isActiveWindow有什么区别
  • 基本和引用数据类型以及对象字面量(day14)
  • ubuntu24.04播放语音视频
  • 启动本地开发环境(自带热启动)yarn serve