正常情况下,对象可以任意修改:
const obj = {
"name":666,
obj1:{
"name1":666,
}
};
obj.name = 333;
obj.obj1.name1 = 333;
console.log(obj); // { "name":333,obj1:{"name1":333, }}
使用递归方法把对象进行遍历并冻结的方法的封装:
const freezeobj = function(obj){
Object.freeze(obj);
Object.keys(obj).forEach( function(key,value){
if ( typeof obj[key] === 'object' ) {
freezeobj( obj[key] ); //递归方法,继续调用
}
});
};
完整调用代码:obj对象被冻结,不能修改。
//使用递归对属性进行遍历并冻结
const obj = {
"name":666,
obj1:{
"name1":666,
}
};
const freezeobj = function(obj){
Object.freeze(obj);
Object.keys(obj).forEach( function(key,value){
if ( typeof obj[key] === 'object' ) {
freezeobj( obj[key] ); //递归方法,继续调用
}
});
};
freezeobj(obj);
obj.name = 333;
obj.obj1.name1 = 333;
console.log(obj); // { "name":666,obj1:{"name1":666, }}
MDN 文档的freeze()冻结对象