JavaScript Object.freeze() 方法凍結一個對象。
無法再更改凍結的對象。凍結對象可防止:
- 新屬性被添加到對象。
- 要從對象中刪除的現有屬性。
- 更改現有屬性的可枚舉性、可配置性或可寫性。
- 更改現有對象屬性和原型的值。
用法:
Object.freeze(obj)
freeze()
方法是靜態方法,使用Object
類名調用。
freeze()參數
freeze()
方法包含:
obj
- 要凍結的對象。
freeze() 的返回值
- 傳遞給函數的對象。
注意:
- 任何從凍結對象的屬性集中添加或刪除的嘗試都會以靜默方式失敗或拋出
TypeError
(主要是在嚴格模式下)。 - 使用
Object.seal()
密封的對象可以更改其現有屬性,而Object.freeze()
使現有屬性不可變。
示例:使用 freeze()
let obj = {
prop: function () {},
foo: "bar",
};
let o = Object.freeze(obj);
console.log(o == obj); // True -> Returns the same object
console.log(Object.isFrozen(obj)); // true
// changes will fail silently
obj.foo = "bar1";
console.log(obj.foo); // bar
// does not add silently
obj.new_foo = "bar";
console.log(obj.new_foo); // undefined
// Following will also throw error
// Object.setPrototypeOf(obj, { x: 20 })
輸出
true true bar undefined
注意:Object.freeze(obj)
隻適用於直接屬性obj
.如果這些屬性的值是對象本身,則這些對象不會被凍結,並且可能是屬性添加、刪除或值重新分配操作的目標。
相關用法
- JavaScript Object.fromEntries()用法及代碼示例
- JavaScript Object.isPrototypeOf()用法及代碼示例
- JavaScript Object.assign()用法及代碼示例
- JavaScript Object.isExtensible()用法及代碼示例
- JavaScript Object.getPrototypeOf()用法及代碼示例
- JavaScript Object.isFrozen()用法及代碼示例
- JavaScript Object.seal()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptors()用法及代碼示例
- JavaScript Object.setPrototypeOf()用法及代碼示例
- JavaScript Object.getOwnPropertySymbols()用法及代碼示例
- JavaScript Object.defineProperties()用法及代碼示例
- JavaScript Object.preventExtensions()用法及代碼示例
- JavaScript Object.is()用法及代碼示例
- JavaScript Object.getOwnPropertyDescriptor()用法及代碼示例
- JavaScript Object.getOwnPropertyNames()用法及代碼示例
- JavaScript Object.propertyIsEnumerable()用法及代碼示例
- JavaScript Object.defineProperty()用法及代碼示例
- JavaScript Object.keys()用法及代碼示例
- JavaScript Object.values()用法及代碼示例
- JavaScript Object.create()用法及代碼示例
注:本文由純淨天空篩選整理自 JavaScript Object.freeze()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。