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

forEach可以遍历不可枚举属性吗

首先第一个问题,forEach能不能遍历对象的属性

const obj = { a: 1, b: 2, c: 3 };
obj.forEach((item) => console.log(item))

在这里插入图片描述
运行这段代码我们发现发生了一个错误
这说明forEach是不可以遍历对象的属性的

在js中,forEach 方法用于遍历数组或类数组对象(如 NodeList

第二个问题,怎么遍历对象的不可枚举属性呢

这里有一个对象,我们定义了一个不可枚举属性

const obj = { a: 1, b: 2, c: 3 };// 定义一个不可枚举属性
Object.defineProperty(obj, 'd', {value: 4,enumerable: false,
});

我们可以通过两种方式来遍历不可枚举属性

  • 可以通过 Object.defineProperty() 方法重新定义属性,将其 enumerable 属性设置为 true,使其变得可枚举。
  • 如果需要遍历对象的所有属性(包括不可枚举属性),可以使用 Object.getOwnPropertyNames() 方法。

Object.getOwnPropertyNames() 静态方法返回一个数组,其包含给定对象中所有自有属性(包括不可枚举属性,但不包括使用 symbol 值作为名称的属性)。

同时通过getOwnPropertyNames方法,我们就可以对其返回值调用forEach来进行遍历了

const obj = { a: 1, b: 2, c: 3 };// 定义一个不可枚举属性
Object.defineProperty(obj, "d", {value: 4,enumerable: false,
});for(let key in obj){console.log(key, obj[key])
}console.log('----------------------------------')// 使用 Object.getOwnPropertyNames() 和 forEach
Object.getOwnPropertyNames(obj).forEach((key) => {console.log(`${key}: ${obj[key]}`);
});

在这里插入图片描述

http://www.lryc.cn/news/478919.html

相关文章:

  • Docsify文档编辑器:Windows系统下个人博客的快速搭建与发布公网可访问
  • 索引基础篇
  • 多进程与多线程分不清?
  • 【零基础学习CAPL】——XML工程创建与使用详解
  • 市场营销应该怎么学?
  • 作为一个前端开发者 以什么步骤学习后端技术
  • 大数据新视界 -- 大数据大厂之经典案例解析:广告公司 Impala 优化的成功之道(下)(10/30)
  • yolov8涨点系列之Concat模块改进
  • JavaAPI(1)
  • 【大模型】通过Crew AI 公司的崛起之路学习 AI Agents 的用法
  • Python接口自动化测试实战
  • 前端Web用户 token 持久化
  • 【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(2)
  • ONLYOFFICE 文档8.2更新评测:PDF 协作编辑、性能优化及更多新功能体验
  • 【WebRTC】视频采集模块中各个类的简单分析
  • 【大模型系列】Grounded-VideoLLM(2024.10)
  • EV录屏好用吗?盘点2024年10款专业好用的录屏软件。
  • Pandas | 理性判断数据是否存在缺失值的一种方法
  • ENSP (虚拟路由冗余协议)VRRP配置
  • move_base
  • Android Intent 跳转常见系统设置
  • [复健计划][紫书]Chapter 7 暴力求解法
  • 基于SpringBoot的社区讯息服务小程序【附源码】
  • springboot图书管理系统(一个简单的单体架构项目,适合小白)
  • 《CLR via C#》读书笔记--CLR的执行模型
  • Javascript常见数据结构及其应用场景
  • 简单的签到程序 python笔记
  • 30天如何成功转行成为AI产品经理?如果你也想转行到AI,赶紧进来抄作业!!!
  • 基于Python+Vue开发的蛋糕商城管理系统
  • WSL开发--利用Git连接远程仓库(详细步骤)