美文网首页前端必知必会,你不知道的前端
JavaScript ES5 中对象的扩展,密封,冻结

JavaScript ES5 中对象的扩展,密封,冻结

作者: 赵永盛 | 来源:发表于2019-06-08 23:13 被阅读9次
扩展:
  • 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 不是递归的,在封闭一个对象之后, 我们仍然可以访问/设置其下一级的属性

相关文章

网友评论

    本文标题:JavaScript ES5 中对象的扩展,密封,冻结

    本文链接:https://www.haomeiwen.com/subject/woiwxctx.html