type
status
date
slug
summary
category
password
tags
icon
在JavaScript中,遍历对象的属性是一项常见的需求,有很多种方法,用得最多的可能就是for…in,但这远远不够,本文将介绍所有的方法和情况,包括对象自身的属性、自身和原型链上的属性、原型链上的属性,以及区分可枚举、不可枚举和Symbol属性的方法。
1. 自身属性
自身属性是指对象自身(不包括原型链上的属性)所拥有的属性。我们可以通过
Object.keys()
和 Object.getOwnPropertyNames()
来获取对象的自身属性。2. 自身和原型属性
遍历对象的自身属性和原型链上的属性可以使用
for...in
语句。需要注意的是,这种方式只会遍历可枚举属性。3. 原型属性
获取对象的原型属性可以通过遍历原型链。尽管没有直接的方法获取原型上的属性,我们可以结合
for...in
和 Object.hasOwnProperty()
来实现。4. 可枚举属性
可枚举属性可以通过
Object.keys()
、for...in
和 Object.entries()
来遍历。5. 不可枚举属性
不可枚举属性不会出现在
for...in
或 Object.keys()
中,但可以使用 Object.getOwnPropertyNames()
获取。6. Symbol 属性
Symbol 属性是独特的属性键,不会与字符串键冲突。它们可以通过
Object.getOwnPropertySymbols()
获取。总结
选择合适的方法取决于你需要的属性范围和属性类型。
- 自身属性:
Object.keys()
、Object.getOwnPropertyNames()
、Reflect.ownKeys()
- 自身和原型属性:
for...in
- 可枚举属性:
Object.keys()
、for...in
、Object.entries()
、Reflect.ownKeys()
- 不可枚举属性:
Object.getOwnPropertyNames()
、Reflect.ownKeys()
- Symbol 属性:
Object.getOwnPropertySymbols()
、Reflect.ownKeys()
欢迎您在底部评论区留言,一起交流~
- 作者:NotionNext
- 链接:https://lsnx.top/article/js-all-ergodic-obj-keys-ways
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。