JS标准库:属性描述对象

概述

JavaScript 提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写,可遍历等等。这个内部数据结构称为“属性描述对象”。

属性描述对象提供6个元属性:

  • value:是该属性的属性值,默认为undefined
  • writable:是一个布尔值,表示该属性值(value)是否可写,默认为true
  • enumerable:是一个布尔值,表示可属性值是否可遍历,默认为true。如果设为false,会使得某些操作(比如for...in循环,Object.keys())跳过该属性。
  • configurable:是一个布尔值,表示属性的可配置性,默认为true。如果设为false,将阻止某些操作改写属性描述对象,比如无法删除该属性,也不得改变各种元属性(value属性除外)。
  • get:是一个函数,表示该属性的取值函数(getter),默认为undefined
  • set:是一个函数,表示该属性的存值函数(setter),默认为undefined

Object.getOwnPropertyDescriptor()

可以获取属性描述对象。第一个参数是目标对象,第二个参数是一个字符串,对应目标对象的某个属性名。

上面代码中,Object.getOwnPropertyDescriptor()方法获取obj.p的属性描述对象。

注意,Object.getOwnPropertyDescriptor()方法只能用于对象自身的属性,不能用于继承的属性。

Object.getOwnPropertyNames()

返回一个数组,成员是参数对象自身的全部属性的属性名,不管该属性是否可遍历。

Object.defineProperty(),Object.defineProperties()

Object.prototype.propertylsEnumerable()

元属性

value

writable

enumerable

configurable

原创文章,作者:seabert,如若转载,请注明出处:https://bysjb.cn/js-library-attributes.html