JS如何获取对象的属性名和属性值

获取对象属性名的方法推荐以下几种:

第一种是使用Object.keys()方法,它接收一个对象作为参数,返回这个对象自有的可枚举非符号属性的属性名,用数组的形式表现出来。

第二种是使用Object.getOwnPropertyNames()方法,它接收一个对象作为参数,返回这个对象自有的非符号属性的属性名(不论是否可枚举),用数组的形式表现出来。

第三种是使用Object.getOwnPropertySymbols()方法,它接收一个对象作为参数,返回这个对象自有的符号属性的属性名(不论是否可枚举),用数组的形式表现出来。

第四种是使用Reflect.ownKeys()方法,它接收一个对象作为参数,返回这个对象的自有的所有属性的属性名(不论是否可枚举、也不论是不是符号),用数组的形式表现出来。

参考以下例子:

上面的例子中创建了一个newObj对象,其中包含两条可枚举的字符串属性,一条不可枚举的字符串属性和一条可枚举的符号属性,我们使用不同的方法获取到了不同的属性名。

接下来介绍如何获取对象的属性值:

获取对象的单个属性值可以用.号或[]号,通过属性名访问属性值。

如果想要获取对象的多个属性值,可以使用下面的方法:

一. 如果想要获取对象自有的可枚举非符号属性的属性值,可以用Object.values()方法。

二. 如果想要获取对象自有的非符号属性的属性值,可以先使用Object.getOwnPropertyNames()方法获取符合条件的属性名构成的数组。再用map()方法映射出一个新的属性值列表。

三. 如果想要获取对象自有的所有属性的属性值,可以先使用Reflect.ownKeys()方法获取符合条件的属性名构成的数组。再用map()方法映射出一个新的属性值列表。

如下图所示:

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