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等框架的源碼中你可以看到該方法的身影。