当前位置: 首页 > news >正文

Javascript对象遍历方式

概念:我们都知道js内部实际上与python,java等的继承方式不同,js是通过原型和原型链的方式实现继承
image

那么有一个很关键的问题,如果我们想要得到某个对象的属性,我们应该怎么做??

要解决这个问题,有两个方面要解决,一是明确需求,即所需属性是否在原型链上;二是属性类型是什么

根据以上两个方面,可以将js对象属性分为四类:1.自身属性;2.原型链上的属性;3.可枚举属性;4.特殊属性

因此,有四种对应的遍历方式

方法 自身属性 原型链 可枚举 Symbol
for...in true true true false
Object.keys() true false false false
Object.getOwnPropertyNames() true false true & false false
Object.getOwnPropertySymbols() true false N/A true
Reflect.ownKeys() true false true true

1.for...in

会遍历原型,所以要搭配Object.prototype.hasOwnProperty()使用
const ownResult = []; for(let key in obj){ if(Object.prototype.hasOwnProperty.call(obj,key)){ ownResult.push(key); } }

2.Object.keys

只遍历自身的可枚举的字符串属性,不会遍历原型链,也忽略了Symbol属性

3.Object.getOwnPropertyNames()

遍历对象自身的所有字符串属性,无论是否可枚举

4.Object.getOwnPropertySymbols()

返回自身所有的Symbol属性

5.Reflect.ownKeys()

最完整的自身属性列表,自身所有属性,包括Symbol都能看见,但是不属于自身的,看不见
Proxy经常结合Reflect搭配应用在元编程和代理拦截当中

6.遍历顺序

1.字符串键:证书(保证数组)升序,其他字符串键(插入顺序或者初始化顺序)
2.Symbol

总结:以上有多种对象属性遍历方式可以供我们选择,但是在选择时还应该注意性能问题,选择合理的方式达成效果,比如Object.keys通常快于for...in+hasOwnProperty
遍历方式越全面,那么性能开销一般越大

http://www.jsqmd.com/news/28245/

相关文章:

  • 2025年企业谷歌优化热门选择榜
  • 2025年比较好的网站建设行业权威榜
  • 2025年11月网上兼职赚钱正规平台推荐:市场报告与选择指南 ,
  • 2025年正规的餐饮设计高评分口碑榜
  • 2025年正规的网站建设高评分口碑榜
  • 2025年有能力的短视频拍摄用户推荐榜
  • 2025年专业的景区策划实力机构权威推荐榜
  • 2025年11月印刷厂推荐:知名主流榜单选择全攻略
  • 2025年正规的装修全屋定制行业口碑排行榜
  • 2025年知名的应届生云计算就业高薪岗位榜
  • 2025年11月印刷厂推荐:行业口碑评价与排行榜指南
  • 2025年比较好的茶饮喝茶果茶饮品最新TOP排名
  • 函数版 任务1 任务2 任务3 最终版 2025/11/1 9:44
  • 2025年11月铝材厂家推荐:主流厂家评测与选择避坑
  • 2025年靠谱的指示系统设计公司最新评价高榜联系电话
  • 2025年11月铝材厂家推荐:主流口碑排行榜与避坑指南
  • 2025年比较好的广州化妆品品牌设计行业专家权威推荐榜
  • 2025年本土装修公司最新品牌实力榜
  • 2025年可靠的格力空调代理专业服务单位推荐榜
  • 2025年评价高的环保咨询行业综合实力排行榜
  • 2025年比较好的上海国际空运全国优质服务推荐榜
  • 2025年热门的年会活动策划客户首选服务排行榜
  • 2025年热门的高压直流接触器厂家推荐及采购参考
  • Tarjan 家族
  • 2025年知名的IP授权综合竞争力排行榜
  • 2025年评价高的成都标书品牌推荐榜
  • 2025年口碑好的上海绿色制冷IDCE数据中心展展位预订
  • 2025年质量好的智慧体育设备行业内高评价品牌榜
  • 2025年质量好的鹅卵石鱼池假山制作热门厂家推荐榜单
  • 2025年评价高的软件视频会议优质服务榜