技术分享
🐘史上最全:JS遍历对象属性
00 分钟
2023-8-8
2024-5-23
type
status
date
slug
summary
category
password
tags
icon
 
📢
在JavaScript中,遍历对象的属性是一项常见的需求,有很多种方法,用得最多的可能就是for…in,但这远远不够,本文将介绍所有的方法和情况,包括对象自身的属性、自身和原型链上的属性、原型链上的属性,以及区分可枚举、不可枚举和Symbol属性的方法。

1. 自身属性

自身属性是指对象自身(不包括原型链上的属性)所拥有的属性。我们可以通过 Object.keys()Object.getOwnPropertyNames() 来获取对象的自身属性。

2. 自身和原型属性

遍历对象的自身属性和原型链上的属性可以使用 for...in 语句。需要注意的是,这种方式只会遍历可枚举属性。

3. 原型属性

获取对象的原型属性可以通过遍历原型链。尽管没有直接的方法获取原型上的属性,我们可以结合 for...inObject.hasOwnProperty() 来实现。

4. 可枚举属性

可枚举属性可以通过 Object.keys()for...inObject.entries() 来遍历。

5. 不可枚举属性

不可枚举属性不会出现在 for...inObject.keys() 中,但可以使用 Object.getOwnPropertyNames() 获取。

6. Symbol 属性

Symbol 属性是独特的属性键,不会与字符串键冲突。它们可以通过 Object.getOwnPropertySymbols() 获取。

总结

选择合适的方法取决于你需要的属性范围和属性类型。
  • 自身属性Object.keys()Object.getOwnPropertyNames() Reflect.ownKeys()
  • 自身和原型属性for...in
  • 可枚举属性Object.keys()for...inObject.entries() Reflect.ownKeys()
  • 不可枚举属性Object.getOwnPropertyNames()Reflect.ownKeys()
  • Symbol 属性Object.getOwnPropertySymbols()Reflect.ownKeys()
 
💡
欢迎您在底部评论区留言,一起交流~