//对象冻结=>深度冻结
//不能直接冻结obj
function constTize(obj){
if(Object.isFrozen(obj)){
return obj
}
// Object.keys(obj)等价于Reflect.ownKeys
Object.keys(obj).forEach(key=>{
//深度冻结
typeof obj[key]==="object"&&(obj[key]=constTize(obj))
})
return Object.freeze(obj)
}
const obj={
a:{
b:2,
arr:[1,2,3]
},
c:123
}
//浅拷贝
const demoObj=constTize(obj)
try {
demoObj.a.arr=[]
demoObj.c=456
} catch (error) {
console.log(error.message)
}