扩展:
- Object.preventExtensions
- Object.isExtensible
密封:
- Object.seal
- Object.isSealed
冻结:
- Object.freeze
- Object.isFrozen
Object.preventExtensions
阻止对象扩展,不可以添加新的属性

如果是 严格模式 下,设置新的属性会报错
Object.isExtensible
判断一个对象是否是 可扩展 的

Object.seal
让一个对象密封,并返回被密封后的对象。
密封对象是指那些不能添加新的属性,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性,但可以修改已有属性的值的对象
添加新属性,无法添加,严格模式下报错

无法删除现有属性

现有属性的值是可以修改的

Object.isSealed
判断一个对象是否是密封的

Object.freezed
冻结对象是指那些不能添加新的属性,不能修改已有属性的值,不能删除已有属性,以及不能修改已有属性的可枚举性、可配置性、可写性的对象。
也就是说,这个对象永远是不可变的
和 seal 相比,冻结的对象无法修改现有属性的值

判断一个对象是否被冻结

注意: seal 和 freeze 不是递归的,在封闭一个对象之后, 我们仍然可以访问/设置其下一级的属性
网友评论