JavaScrip对象遍历的几种方法比较

JavaScript对象属性的遍历

先看代码

const fObj = {
  fa: 'fa',
  [Symbol('fa')]: true,
}
Object.defineProperties(fObj, {
  fb: { value: true },
  fx: { get: () => 'fx' },
})
console.log('fObj 的属性描述', Object.getOwnPropertyDescriptors(fObj))
const obj = {
  a: 10,
  [Symbol('a')]: 'a',
}
Object.setPrototypeOf(obj, fObj)
Object.defineProperties(obj, {
  b: { value: 'true' },
  x: { get: () => 'x' },
})
console.log('obj 的属性描述', Object.getOwnPropertyDescriptors(obj))

console.log(Object.keys(obj)) // ["a"]
console.log(Object.getOwnPropertyNames(obj)) // ["a", "b", "x"]
console.log(Object.getOwnPropertySymbols(obj)) // [Symbol(a)]
console.log(Reflect.ownKeys(obj)) // ["a", "b", "x", Symbol(a)]

const forInKeys = []
for (const key in obj) {
  forInKeys.push(key)
}
console.log(forInKeys) // [ 'a','fa' ]


上面列出的遍历方法有

  • Object.keys()
    遍历自身的可枚举属性(enumerable=ture)
  • Object.getOwnPropertyNames()
    遍历自身的所有属性, 不包括key为symbol类型的属性
  • Object.getOwnPropertySymbols()
    遍历key为symbol类型的属性
  • Reflect.ownKeys()
    遍历自身的所有属性
  • for in
    遍历自身和原型链上的可枚举属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值