function completelyFreezeObj = (obj) => {
if(Object.prototype.toString.call(obj) != "[object Object]"){
console.error("obj不是对象");
return;
}
Object.freeze(obj);
Object.keys(obj).forEach( (key, i) => {
if (Object.prototype.toString.call(obj[key]) == "[object Object]") {
completelyFreezeObj(obj[key]);
}
});
};
利用递归不仅冻结对象本身,同时冻结它的属性值为对象的属性,这样不管是let声明的对象还是var声明的对象,都将不能修改此对象的任何属性。
Object.keys()方法返回对象中可枚举属性组成的数组。