获取对象属性名的方法推荐以下几种:
第一种是使用Object.keys()
方法,它接收一个对象作为参数,返回这个对象自有的,可枚举、非符号属性的属性名,用数组的形式表现出来。
第二种是使用Object.getOwnPropertyNames()
方法,它接收一个对象作为参数,返回这个对象自有的、非符号属性的属性名(不论是否可枚举),用数组的形式表现出来。
第三种是使用Object.getOwnPropertySymbols()
方法,它接收一个对象作为参数,返回这个对象自有的、符号属性的属性名(不论是否可枚举),用数组的形式表现出来。
第四种是使用Reflect.ownKeys()
方法,它接收一个对象作为参数,返回这个对象的自有的、所有属性的属性名(不论是否可枚举、也不论是不是符号),用数组的形式表现出来。
参考以下例子:

上面的例子中创建了一个newObj
对象,其中包含两条可枚举的字符串属性,一条不可枚举的字符串属性和一条可枚举的符号属性,我们使用不同的方法获取到了不同的属性名。
接下来介绍如何获取对象的属性值:
获取对象的单个属性值可以用.
号或[]
号,通过属性名访问属性值。

如果想要获取对象的多个属性值,可以使用下面的方法:
一. 如果想要获取对象自有的、可枚举、非符号属性的属性值,可以用Object.values()
方法。
二. 如果想要获取对象自有的,非符号属性的属性值,可以先使用Object.getOwnPropertyNames()
方法获取符合条件的属性名构成的数组。再用map()
方法映射出一个新的属性值列表。
三. 如果想要获取对象自有的,所有属性的属性值,可以先使用
方法获取符合条件的属性名构成的数组。再用Reflect.ownKeys()
map()
方法映射出一个新的属性值列表。
如下图所示:

还有一个Object.entries()
方法,可以把对象自有的,可枚举,非符号属性(包括属性名和属性值)转化为嵌套数组的形式。
