JavaScript Object.freeze()
定义和用法
Object.freeze() 方法用于防止对对象进行任何更改。
在非严格模式下,Object.freeze() 方法会静默失败。
在严格模式下,Object.freeze() 方法会抛出 TypeError。
被冻结的对象是只读的。不允许修改、添加或删除属性。
可以使用 Object.isFrozen() 方法来检查对象是否被冻结。
相关方法:
Object.preventExtensions() 允许修改,但阻止添加属性。
Object.seal() 允许修改,但阻止添加和删除属性。
Object.freeze() 阻止修改、添加和删除属性。
Object.isExtensible() 如果对象可扩展,则返回 true。
Object.isSealed() 如果对象是密封的,则返回 true。
Object.isFrozen() 如果对象被冻结,则返回 true。
实例
例子 1
"use strict"
// 创建对象
const person = {
firstName: "Bill",
lastName: "Gates",
age: 50,
eyeColor: "blue"
};
// 冻结对象
Object.freeze(person);
// 这将抛出错误
person.age = 51;
例子 2
const fruits = ["Banana", "Orange", "Apple", "Mango"];
Object.freeze(fruits);
// 这将抛出错误:
fruits.push("Kiwi");
语法
Object.freeze(object)
参数
| 参数 | 描述 |
|---|---|
| object | 必需。要冻结的对象。 |
返回值
| 类型 | 描述 |
|---|---|
| Object | 被冻结的对象。 |
浏览器支持
Object.freeze() 是 ECMAScript5 (ES5) 的特性。
自 2013 年 7 月起,所有现代浏览器均完全支持 ES5(JavaScript 2009):
| Chrome | Edge | Firefox | Safari | Opera |
|---|---|---|---|---|
| Chrome 23 | IE/Edge 11 | Firefox 21 | Safari 6 | Opera 15 |
| 2012 年 9 月 | 2012 年 9 月 | 2013 年 4 月 | 2012 年 7 月 | 2013 年 7 月 |