Object.freeze方法是es5中新增加的一个属性描述符,用于锁定一个对象,被锁定后的对象将不可添加或删除属性,对自身已有属性也不可进行修改。
let obj = Object.freeze({name:"aaa"});
obj.age=12;
console.log(obj.age); // undefined
obj.name = "bbb";
console.log(obj.name); // aaa
delete obj.name;
console.log(obj.name); // aaa
// 是否允许扩展
let isExtensible = Object.isExtensible(obj);
console.log(isExtensible); // false
// 是否不允许删除和添加属性
let isSealed = Object.isSealed(obj);
console.log(isSealed); // true
// 是否被冻结
let isFrozen = Object.isFrozen(obj);
console.log(isFrozen); // true
这个方法主要用于创建并锁定一个全局对象,在一些框架封装里边可以借助它锁定一个唯一全局对象。在vue等框架的源码中你可以看到该方法的身影。