1.想将对象冻结,应该使用Object.freeze方法。
const foo =Object.freeze({}); // 常规模式时,下面一行不起作用;// 严格模式时,该行会报错foo.prop =123;
上面代码中,常量foo指向一个冻结的对象,所以添加新属性不起作用,严格模式时还会报错。
除了将对象本身冻结,对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。
var constantize = (obj) => {
Object.freeze(obj);
Object.keys(obj).forEach( (key, value) =>{
if(typeofobj[key] ==='object') {
constantize( obj[key] );
}
});
};
网友评论