JS标准库之属性描述对象

概述

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

{
    value: 123,
    writable: false,
    enumerable: true,
    configurable: false,
    get: undefined,
    set: undefined
}

属性描述对象提供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()

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

var obj = { p: 'a' }

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

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

Object.getOwnPropertyNames()

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

这些信息可能会帮助到你: 关于我们 | 饿了么返钱 | 捐赠支持

文章名称:JS标准库之属性描述对象
文章链接:https://www.bysjb.cn/js-library-attr.html
THE END
分享
二维码
打赏
< <上一篇
下一篇>>