js | 作用域

前置知识

作用域

const对象怎么禁止修改

  • 方法一: Object.freeze
  • 方法二:defineProperty+递归,对于每个节点都有:writable:false
javascript 复制代码
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)
相关推荐
Leon22 分钟前
新手引导 intro.js 的使用
前端·javascript·vue.js
Zeros25 分钟前
Claude Code 使用心得 - 从尝鲜到日常的进阶之路
前端
我是何平28 分钟前
js中,什么是线性查找?
前端
我是何平28 分钟前
🧠 用 JavaScript 理解算法复杂度:时间复杂度与空间复杂度详解
前端
SuperEugene33 分钟前
接口类型管理:从 any 到有组织的 api.d.ts
前端·面试·typescript
喝咖啡的女孩33 分钟前
React Hook & Class
前端
小呆呆_小乌龟33 分钟前
同样是定义对象,为什么 TS 里有人用 interface,有人用 type?
前端·react.js
Forever7_34 分钟前
仅用一个技巧,让 JavaScript 性能提速 500%!
前端·vue.js
慢慢长大的孩子39 分钟前
个人运营小网站的最佳策略
前端·后端
牛奶1 小时前
ts随笔:基础与类型系统
前端·面试·typescript