当前位置: 首页 > 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.gsyq.cn/news/36644.html

相关文章:

  • 2025年企业谷歌优化热门选择榜
  • 2025年比较好的网站建设行业权威榜
  • 2025年正规的餐饮设计高评分口碑榜
  • 2025年正规的网站建设高评分口碑榜
  • 2025年专业的景区策划实力机构权威推荐榜
  • 2025年11月印刷厂推荐:行业口碑评价与排行榜指南
  • 2025年本土装修公司最新品牌实力榜
  • Tarjan 家族
  • 2025年口碑好的珍珠棉快递水果包装热门厂家推荐榜单
  • 2025年11月祛斑精华产品对比榜:淡斑效率与修护力综合排名
  • 2025年评价高的特教设备器材厂家最新TOP实力排行
  • 2025年质量好的昆山绿化租赁用户好评厂家排行
  • 2025年知名的7163磨床高评价厂家推荐榜
  • 精通定制IC设计:开启未来电子的核心之路
  • 2025年靠谱的宁波澳洲海外仓跨境卖家优选服务榜
  • 最新 Navicat Premium 17激活永久教程2024
  • 2025年知名的学生餐团餐配送最新权威实力榜公司
  • 2025年优质的房屋检测鉴定实力机构推荐榜
  • 2025年比较好的离型纸行业内口碑厂家排行榜
  • 2025年热门的小口径不锈钢焊管热门厂家推荐榜单
  • 2025年11月四川护栏厂家推荐榜:五强实力对比与选购要点全解析
  • 2025年靠谱的物联箱式变电站行业内知名厂家排行榜
  • 国内优质的一物一码公司推荐
  • 2025年质量好的钢结构原材料销售厂家最新用户好评榜
  • 2025年有实力耐磨尼龙改性颗粒厂家推荐及采购参考
  • 2025年质量好的除醛光触媒用户口碑最好的厂家榜
  • 2025年可靠的水磨年糕机厂家最新权威实力榜
  • 2025年北京办公家具公司联系电话推荐:从设计到售后全链路
  • 2025年靠谱的天然火山岩优质厂家推荐榜单
  • 2025年 11月 连接器厂家权威推荐榜:防水/m12防水/m8/防水3芯/防水t型三通/防水线束线缆/防水包胶连接器实力制造与创新技术深度解析