JavaScript对象属性描述符是什么?

admin 百科 12
JavaScript对象属性描述符定义属性行为,分数据描述符(含value/writable)和存取器描述符(含get/set),二者互斥;configurable、enumerable、writable控制删除、遍历与赋值,value或get/set决定存值方式。

JavaScript对象属性描述符是什么?-第1张图片-佛山资讯网

JavaScript对象属性描述符是用来定义和控制对象属性行为的一组配置项,它决定了属性是否可读、可写、可枚举、可配置,以及它的值或存取器函数。

数据描述符和存取器描述符

属性描述符分为两类:数据描述符(data descriptor)和存取器描述符(accessor descriptor)。二者互斥,不能混用。

  • 数据描述符包含 valuewritable,还可选 enumerableconfigurable
  • 存取器描述符包含 get 和/或 set,同样可选 enumerableconfigurable
  • 使用 Object.defineProperty()Object.defineProperties() 设置描述符时,若不显式指定,默认值为 false(比如 writableenumerableconfigurable

四个关键布尔属性的作用

所有描述符都可能包含以下四个布尔型配置项,它们控制属性的底层行为:

  • configurable:为 false 时,该属性不能被删除,也不能再修改描述符(如从数据描述符改存取器),Object.defineProperty() 会报错
  • enumerable:为 false 时,该属性不会出现在 for...in 循环、Object.keys()JSON.stringify()
  • writable:仅对数据描述符有效;为 false 时,value 不可被重新赋值(严格模式下赋值会静默失败或抛错)
  • valueget/set:决定属性是直接持有值,还是通过函数动态读写

如何查看和设置描述符

Object.getOwnPropertyDescriptor() 查看单个属性的完整描述符;用 Object.getOwnPropertyDescriptors() 获取整个对象所有自有属性的描述符对象。

标签: javascript java js json access

发布评论 0条评论)

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