为什么javascript需要对象密封_它限制哪些操作?

admin 百科 10
对象密封限制新增属性、删除属性和重新配置属性,但允许修改已有可写属性的值;它比不可扩展多禁删除,比冻结少禁改值,适用于结构稳定而内容需可变的场景。

为什么javascript需要对象密封_它限制哪些操作?-第1张图片-佛山资讯网

JavaScript 中的 对象密封(sealing) 主要是为了在不冻结对象的前提下,防止意外修改对象的结构——也就是禁止新增或删除属性,同时保留对已有属性值的修改能力。

密封对象限制哪些操作?

调用 Object.seal(obj) 后,对象会进入“密封”状态,以下操作会被阻止:

  • 不能添加新属性(obj.newProp = 1 无效,严格模式下抛出错误)
  • 不能删除已有属性(delete obj.existingProp 失败,严格模式下报错)
  • 不能重新配置属性(即不能改 configurable: false,所以也不能再用 Object.defineProperty 改 descriptor 中的 configurablewritable

但注意:已存在的可写属性(writable: true)的值仍可修改,比如 obj.name = "Alice" 是允许的。

和冻结(freeze)、不可扩展(preventExtensions)的区别

三者是递进关系,限制力度逐步增强:

立即学习“Java免费学习笔记(深入)”;

标签: javascript java 区别 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~