@色少2年前
03/21
19:52
for…in
for…in 可以遍历对象的所有可枚举属性,包括对象本身的和对象继承来的属性
Object.keys()
Object.keys()方法可以遍历到所有对象本身的可枚举属性,但是其返回值为数组
Object.values()
Object.values()与Object.keys()遍历对象的特性是相同的,但是其返回的结构是以遍历的属性值构成的数组
Object.entries()
Object.entries()的返回值为Object.values()与Object.keys()的结合,也就是说它会返回一个嵌套数组,数组内包括了属性名与属性值
Object.getOwnPropertyNames()
其返回结果与Object.keys()对应,但是他得特性与其相反,会返回对象得所有属性,包括了不可枚举属性
Object.getOwnPropertySymbols()
Object.getOwnPropertySymbols()会返回对象内的所有Symbol属性,返回形式依旧是数组,值得注意的是,在对象初始化的时候,内部是不会包含任何Symbol属性
Reflect.ownKeys()
Reflect.ownKeys()返回的是一个大杂烩数组,即包含了对象的所有属性,无论是否可枚举还是属性是symbol,还是继承,将所有的属性返回
根据遍历目标区分
遍历目标 | 方法 |
---|---|
遍历对象本身的可枚举属性不包含继承来的属性(不包括Symbol()) |
Object.keys() Object.values() Object.entries() |
遍历对象本身的可枚举属性包括继承来的属性(不包括Symbol()) | for…in |
遍历对象本身的所有属性(不包括Symbol()) | Object.getOwnPropertyNames() |
遍历对象的Symbol()属性 | Object.getOwnPropertySymbols() |
遍历对象的所有属性 | Reflect.ownKeys() |
根据返回值区分
返回值 | 方法 |
---|---|
返回数组 |
Object.keys() Object.values() Object.entries() Object.getOwnPropertyNames() Object.getOwnPropertySymbols() Reflect.ownKeys() |
不返回值 | for…in |
根据遍历值区分
遍历值 | 方法 |
---|---|
遍历属性 | Reflect.ownKeys() Object.getOwnPropertyNames() Object.keys() |
遍历属性值 | Object.getOwnPropertySymbols() Object.values() |
遍历全部 | for…in Object.entries() |