Javascript对象属性的遍历

7种Javascript对象属性遍历的方法

测试数据

1
2
3
4
5
6
7
8
var name = 'mingliang.gao';
var demo = {
name,
language: 'js',
say() {
return ('name: ', name, 'language: ', language)
}
}

方法一:for…in

for…in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

1
2
3
for (let k in demo){
console.log(k)
}

结果:

1
2
3
name
language
say

方法二:Object.keys(obj)

Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

1
console.log(Object.keys(demo))

结果:

1
[ 'name', 'language', 'say' ]

方法三:Object.getOwnPropertyNames(obj)

Object.getOwnPropertyNames返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。

1
console.log(Object.getOwnPropertyNames(demo))

结果:

1
[ 'name', 'language', 'say' ]

方法四:Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols返回一个数组,包含对象自身的所有 Symbol 属性的键名。

1
console.log(Object.getOwnPropertySymbols(demo))

结果:

1
[ 'name', 'language', 'say' ]

方法五:Reflect.ownKeys(obj)

Reflect.ownKeys返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

1
console.log(Reflect.ownKeys(demo))

结果:

1
[ 'name', 'language', 'say' ]

方法六:getOwnPropertyDescriptor(obj, ‘属性名’)

对象的每个属性都有一个描述对象(Descriptor),Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象。

1
console.log(getOwnPropertyDescriptor(demo, 'name'))

结果:

1
2
3
4
{ value: 'mingliang.gao',
writable: true,
enumerable: true,
configurable: true }

方法七:解构赋值

1
2
3
4
let { name, language, say, ...args } = demo;
console.log(language)
console.log(say)
console.log(args)

结果:

1
2
mingliang.gao
python

Javascript对象属性的遍历
http://pygo2.top/articles/27964/
作者
mingliang.gao
发布于
2022年1月9日
许可协议