Object.freeze()会冻结被传入的对象的第一层属性,但是不会冻结第二次属性
想要冻结第二层属性需要使用递归
const obj = {
name: 'zs',
hobby: {
sing: '从前说'
}
}
function fn(obj) {
Object.freeze(obj)
for (const key in obj) {
if (typeof obj[key] === 'object') {
fn(obj[key])
}
}
}
fn(obj)
obj.name = 'ls'
obj.hobby.sing = '勇气'
console.log(obj);