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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。