Object.freeze() vs Object.seal() vs Object.preventExtensions()

Photo by sydney Rae on Unsplash

Object.freeze() vs Object.seal() vs Object.preventExtensions()

·

1 min read

今日详解ES5相关知识,区分下这三者的关系

Object.freeze()

冻结一个对象。这实际上是使对象不可变的最严格的方法。它执行以下操作:

  • 防止添加新属性
  • 不允许删除现有属性
  • 不允许更改的直接属性
  • 可以修改子对象的属

image.png

Object.seal()

封闭对象,防止向对象添加新属性。它执行以下操作:

  • 允许更改对象的现有属性
  • 防止添加新属性
  • 不允许删除现有属性

image.png

Object.preventExtensions()

防止向对象添加新属性(即防止将来扩展对象)。它执行以下操作:

  • 允许更改、删除对象的现有属性
  • 防止添加新属性

image.png

结语: 所有三种方法都处理对象的不变性,这限制了向它添加新属性。

image.png