Photo by sydney Rae on Unsplash
Object.freeze() vs Object.seal() vs Object.preventExtensions()
今日详解ES5相关知识,区分下这三者的关系
Object.freeze()
冻结一个对象。这实际上是使对象不可变的最严格的方法。它执行以下操作:
- 防止添加新属性
- 不允许删除现有属性
- 不允许更改的直接属性
- 可以修改子对象的属
Object.seal()
封闭对象,防止向对象添加新属性。它执行以下操作:
- 允许更改对象的现有属性
- 防止添加新属性
- 不允许删除现有属性
Object.preventExtensions()
防止向对象添加新属性(即防止将来扩展对象)。它执行以下操作:
- 允许更改、删除对象的现有属性
- 防止添加新属性
结语: 所有三种方法都处理对象的不变性,这限制了向它添加新属性。