总结js中遍历对象属性的方法
方法介绍
1、 forin循环:遍历对象自身的和原型链上的可枚举属性。
2、Object.getOwnPropertySymbols()方法:返回一个数组,包含对象自身的所有Symbol类型的属性。
3、 Object.getOwnPropertyNames()方法:返回一个数组,包含对象自身的所有属性(不包括Symbol类型的属性),无论它们是否可枚举。
4. Object.keys()方法:返回一个数组,包含对象自身(不含原型链上的)的所有可枚举属性。
5. Object.values()方法:返回一个数组,包含对象自身的所有可枚举属性的值。
6. Object.entries()方法:返回一个数组,其元素是对象自身的可枚举属性键值对数组。
区别说明
这些方法的主要区别在于:
1、 forin循环会遍历对象自身的和原型链上的可枚举属性,其他方法只关注对象自身的属性。
2、Object.keys()、Object.values()、Object.entries()三姐妹只关注对象自身的可枚举属性,
3、Object.getOwnPropertyNames()和Object.getOwnPropertySymbols()会返回对象自身的所有属性,无论它们是否可枚举。
只有Object.getOwnPropertySymbols()会拿自身的symbol属性。
4、Object.keys()、Object.getOwnPropertyNames()返回的是属性名的数组,Object.values()返回的是属性值的数组,Object.entries()返回的是键值对数组,Object.getOwnPropertySymbols()返回的是Symbol类型的属性的数组。
测试代码
let s = Symbol('symbol')// 先定义一个symbol属性和对象自身属性let obj = {name: '虾米',[s]: 'symbol属性'}// 再定义一个不可枚举的属性Object.defineProperty(obj, 'sex', {configurable: true,enumerable: false, //不可枚举writable: true,value: 11})// 最后在原型链上定义一个属性obj.__proto__.age = 12// forinfor (let i in obj) {console.log(i, '// forin');}// Object.getOwnPropertyNames()console.log(Object.getOwnPropertyNames(obj), '// Object.getOwnPropertyNames');// Object.getOwnPropertySymbols()console.log(Object.getOwnPropertySymbols(obj),'// Object.getOwnPropertySymbols(obj)');// Object.keys()console.log(Object.keys(obj), '// Object.keys()');// Object.values()console.log(Object.values(obj), '// Object.values()');// Object.entries()console.log(Object.entries(obj), '// Object.entries()');
运行结果:

END
相关文章:
总结js中遍历对象属性的方法
方法介绍 1、 forin循环:遍历对象自身的和原型链上的可枚举属性。 2、Object.getOwnPropertySymbols()方法:返回一个数组,包含对象自身的所有Symbol类型的属性。 3、 Object.getOwnPropertyNames()方法:返回一个数组࿰…...
编写fastapi接口服务
FastAPI是一个基于 Python 的后端框架,该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制,使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。 step1:安装必要库 pip install fastapi uvicorn st…...
RasaGPT对话系统的工作原理
RasaGPT 结合了 Rasa 和 Langchain 这 2 个开源项目,当超出 Rasa 现有意图(out_of_scope)的时候,就会执行 ActionGPTFallback,本质上就是利用 Langchain 做了一个 RAG,调用 LLM API。RasaGPT 涉及的技术栈比较多而复杂,…...
C++设计模式 #7 工厂方法(Factory Method)
“对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持创建的稳定。它是接口抽象之后的第一步工作。 动机 在软件系统中,经常面临着创…...
信息网络协议基础-接入网技术
文章目录 概述***基于ATM架构虚电路PVC和SVC信元格式为什么信元格式由AAL决定?网络架构传统电信网络:点对点链路PPP协议协议内容消息过程多协议封装功能电话网接入Internet(DSL 数字用户线路)主要接入技术ADSL关键技术DMTDSLAM体系结构PPPOE帧格式过程特点局域网定义参考模型L…...
springboot 自动装配原理
在理解springboot自动装配之前需要了解spring的Configuration原理和Conditional两个注解原理。可以看下以前写的这两篇文章 spring 源码阅读之Configuration解析 spring使用Conditional进行条件装配 spring的SPI机制之使用SpringFactoriesLoader加载服务实现 SpringBootApp…...
前端---表格标签
1. 表格的结构 表格是由行和列组成,好比一个excel文件 2. 表格标签 <table>标签:表示一个表格 <tr>标签:表示表格中的一行 <td>标签:表示表格中的列<th>标签:表示表格中的表头 示例代码: &l…...
【软件工程】可执行文件和数据分离
一、概述 可执行文件和数据分离是一种软件设计策略,旨在将程序代码和程序使用的数据分离存储。这种方法通常用于提高软件的模块化程度和灵活性,以及方便软件的管理和维护。 在可执行文件和数据分离中,程序代码通常以可执行文件的形式存储&a…...
Linux dirs命令
Linux dirs命令用于显示目录记录。 显示目录堆叠中的记录。 语法 dirs [/-n -l]参数: n 显示从左边算起第n笔的目录。-n 显示从右边算起第n笔的目录。-l 显示目录完整的记录。 实例 列出"/home/cc/Ruijie"里所有内容的详细信息。可用如下命令。 dir…...
有什么好用的C/C++源代码混淆工具?
有什么好用的C/C源代码混淆工具? 开始使用ipaguard 前言 iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护,防止应用…...
iOS设备信息详解
文章目录 ID 体系iOS设备信息详解IDFA介绍特点IDFA新政前世今生获取方式 IDFV介绍获取方式 UUID介绍特点获取方式 UDID介绍获取方式 OpenUDID介绍 Bundle ID介绍分类其他 IP地址介绍获取方式 MAC地址介绍获取方式正常获取MAC地址获取对应Wi-Fi的MAC地址 系统版本获取方式 设备型…...
如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务
文章目录 1.测试环境2.本地配置2. 内网穿透2.1 下载安装cpolar内网穿透2.2 创建隧道3. 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名5. 使用固定二级子域名进行访问 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,…...
[EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
硬件型号驱动情况主板 Dell Latitude-7400 处理器Intel Core i7-8665U已驱动内存16GB DDR4 RAM已驱动硬盘Toshiba KIOXIA 512GB SSD已驱动显卡Intel UHD 620 Graphics已驱动声卡Realtek ALC256已驱动有线网卡 无 无无线网卡蓝牙Intel Wireless-AC 9560已驱动 支持系统版本 maco…...
用芯片SIC8833可开发电子秤方案
SIC8833作为一款高性能的电子秤方案芯片,这款芯片是一个带24bitADC的8位RISC MCU,内置8k16位OTP程序存储器。具体24位双向I/O口的特性,广泛应用于电子衡器和精密测量及控制系统,能满足用户的不同需求和应用场景。 以下是电子秤方案…...
【Qt-QFile-QDir】
Qt编程指南 ■ Stream■ QTextStream■ QDataStream ■ QDial■ QDir■ QFile■■ ■ Stream ■ QTextStream /* 获取文件的路径 */ QString fileName QFileDialog::getOpenFileName(this);/* 指向文件 */ file.setFileName(fileName);/* 判断文件是否存在 */ if (!file.exi…...
设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…...
Android 13 - Media框架(25)- OMXNodeInstance(二)
上一节我们了解了 OMXNodeInstance 的创建过程,以及 IOmx 服务和 OMXNodeInstance、OMX组件之间的联系。接下来我们将一起了解 ACodec 是如何通过 OMXNodeInstance 这个中间层进行端口定义设置,以及端口Buffer分配的。 OMXNodeInstance 的代码还是比较长…...
生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用
V.PhyloMaker2是一个R语言的工具包,专门用于构建和分析生物系统学中的进化树(也称为系统发育树或phylogenetic tree)。以下是对V.PhyloMaker2的一些基本介绍和使用说明: 论文介绍:V.PhyloMaker2: An updated and enla…...
XStream 反序列化漏洞 CVE-2021-39144 已亲自复现
XStream 反序列化漏洞 CVE-2021-39144 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建 修复建议总结 漏洞名称 漏洞描述 在Unmarshalling Time处包含用于重新创建前一对象的类型信息。XStream基于这些类型的信息创建新实例。攻击者可以控制输入流并替换或注入对象&am…...
深入剖析LinkedList:揭秘底层原理
文章目录 一、 概述LinkedList1.1 LinkedList简介1.2 LinkedList的优点和缺点 二、 LinkedList数据结构分析2.1 Node节点结构体解析2.2 LinkedList实现了双向链表的原因2.3 LinkedList如何实现了链表的基本操作(增删改查)2.4 LinkedList的遍历方式 三、 …...
Beyond Compare 5密钥生成器终极指南:如何通过Python工具免费解锁专业功能
Beyond Compare 5密钥生成器终极指南:如何通过Python工具免费解锁专业功能 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare 5的30天试用期到期而烦恼吗…...
数据可视化库对比:选择最适合你的工具
数据可视化库对比:选择最适合你的工具 前言 大家好,我是前端老炮儿。今天咱们来聊聊数据可视化库的选择! 在前端开发中,数据可视化是一个非常重要的领域。市面上有很多优秀的可视化库,比如ECharts、D3.js、Chart.js、T…...
开环传递函数T/(1+T)与1/(1+T)的工程解析:从波特图看系统跟随性与抗扰性设计
1. 开环传递函数:系统性能的“基因图谱”在任何一个从事自动控制、电力电子或者信号处理领域工程师的日常工具箱里,频域分析都是一个绕不开的核心技能。而当我们谈论一个负反馈系统的性能时,无论是它的响应速度、抗干扰能力还是稳定性&#x…...
Arty S7 FPGA开发板:从入门到进阶的硬件加速与嵌入式开发实战
1. 项目概述:为什么是Arty S7?如果你是一名嵌入式开发者、数字电路设计的学生,或者对硬件加速、实时信号处理感兴趣,那么“FPGA开发板”这个词对你来说一定不陌生。但面对市场上琳琅满目的开发板,从几百元到上万元不等…...
数据结构——带懒标记的线段树
一、什么是线段树?线段树是一种二叉树数据结构,用于高效地处理区间查询和区间更新操作。核心思想:将数组分成若干个区间(线段),每个节点代表一个区间,通过合并子节点的信息来得到父节点的信息。…...
CookieCloud终极指南:一劳永逸解决多设备登录烦恼的完整方案
CookieCloud终极指南:一劳永逸解决多设备登录烦恼的完整方案 【免费下载链接】CookieCloud CookieCloud是一个和自架服务器同步浏览器Cookie和LocalStorage的小工具,支持端对端加密,可设定同步时间间隔。本仓库包含了插件和服务器端源码。Coo…...
如何快速实现 CoffeeScript 实时编译和预览:vim-coffee-script 终极指南 [特殊字符]
如何快速实现 CoffeeScript 实时编译和预览:vim-coffee-script 终极指南 🚀 【免费下载链接】vim-coffee-script CoffeeScript support for vim 项目地址: https://gitcode.com/gh_mirrors/vi/vim-coffee-script 对于 CoffeeScript 开发者来说&am…...
2025-2026年护眼灯品牌推荐:十大排行产品专业评测熬夜加班防眼干疲劳性价比高注意事项
摘要 当家庭与办公场景对光环境的要求从“照亮”升级为“护眼”,决策者面临的核心挑战已转变为如何在纷繁的技术参数与品牌承诺中,识别出真正能长期守护视觉健康、并适配多元场景的专业解决方案。根据全球市场研究机构Grand View Research的报告…...
Python EXE逆向工程完全指南:使用python-exe-unpacker快速反编译打包程序
Python EXE逆向工程完全指南:使用python-exe-unpacker快速反编译打包程序 【免费下载链接】python-exe-unpacker A helper script for unpacking and decompiling EXEs compiled from python code. 项目地址: https://gitcode.com/gh_mirrors/py/python-exe-unpa…...
Unity编辑器性能优化:工作流、场景与预制体三大资源创建瓶颈
1. 为什么编辑器资源创建环节是Unity性能优化的“隐形地雷区”很多人一提Unity性能优化,第一反应就是Profiler里看Draw Call、GC Alloc、CPU耗时,或者去改Shader、压贴图、拆合批。这没错,但90%的团队在项目中后期卡顿频发、打包失败、CI构建…...
