1. Object.freeze() -- 只是浅冻结
- 设置Object.preventExtension(),禁止添加新属性(绝对存在)
- 设置writable为false,禁止修改(绝对存在)
- 设置configurable为false,禁止配置(绝对存在)
- 禁止更改访问器属性(getter和setter)
可以通过 Object.isFrozen() 来判断一个对象是否为冻结对象
2. Object.seal()
- 设置Object.preventExtension(),禁止添加新属性(绝对存在)
- 设置configurable为false,禁止配置(绝对存在)
- 禁止更改访问器属性(getter和setter)
可以通过 Object.isSealed 判断一个对象是否为封闭对象
区别
使用 `Object.freeze()` 冻结的对象中的现有属性是不可变的。
用 `Object.seal()` 密封的对象可以改变其现有属性。
3. Object.preventExtensions()
Object.preventExtensions()方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。
可以使用 `Object.isExtensible()` 判断一个对象是否可扩展。