模拟Object.freeze()
function myFreeze(obj) {
Object.seal(obj); // Object.seal()方法可以让对象不能被扩展、删除属性等等
let p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
Object.defineProperty(obj, p, {writable: false}); // 让对象不能添加修改属性
myFreeze(obj[p]);
}
}
}
}
定义一个不可被修改的对象要用到Object.freeze()。它的作用是冻结一个对象,被冻结的对象有以下几个特性:
不能添加新属性
不能删除已有属性
不能修改已有属性的值
不能修改原型
不能修改已有属性的可枚举性、可配置性、可写性
网友评论