0

0

javascript中Object的方法有哪些_如何高效遍历对象属性

夢幻星辰

夢幻星辰

发布时间:2025-12-26 17:31:57

|

787人浏览过

|

来源于php中文网

原创

javascript中object常用方法分三类:获取属性键/值/键值对、判断属性存在性、控制对象可变性;核心方法如object.keys()、object.values()、object.entries()返回自身可枚举属性,object.hasown()安全判断属性存在,遍历时需按需选择方法避免原型链和不可枚举属性干扰。

javascript中object的方法有哪些_如何高效遍历对象属性

JavaScript 中 Object 的常用方法主要分三类:获取属性键/值/键值对、判断属性存在性、控制对象可变性。高效遍历对象属性的关键是根据需求选择合适的方法,避免误遍历原型链或不可枚举属性。

一、Object 的核心静态方法

这些方法都挂载在 Object 构造函数上,不依赖实例:

  • Object.keys(obj):返回对象自身所有可枚举的字符串键组成的数组(不包括 Symbol 键)。
  • Object.values(obj):返回对象自身所有可枚举属性的值组成的数组。
  • Object.entries(obj):返回对象自身所有可枚举键值对组成的二维数组,如 [["a", 1], ["b", 2]]
  • Object.getOwnPropertyNames(obj):返回自身所有字符串键(含不可枚举的,如 obj.toString 重写后),不含 Symbol。
  • Object.getOwnPropertySymbols(obj):返回自身所有Symbol 类型键组成的数组。
  • Object.hasOwn(obj, key)(推荐替代 obj.hasOwnProperty(key)):安全判断对象是否自身拥有该属性(不查原型链)。
  • Object.isExtensible(obj) / Object.isSealed(obj) / Object.isFrozen(obj):检测对象的可扩展性、密封性、冻结状态。

二、遍历对象属性的高效方式

遍历时务必明确目标:是否需要键?是否需要值?是否要跳过原型链?是否要包含不可枚举或 Symbol 属性?

A1.art
A1.art

一个创新的AI艺术应用平台,旨在简化和普及艺术创作

下载
  • 只遍历自身可枚举字符串属性(最常用):用 for...in + Object.hasOwn 或直接用 Object.keys() 配合 for...of / forEach
    ✅ 推荐:Object.keys(obj).forEach(key => console.log(key, obj[key]))
  • 需要键值对且顺序确定:用 Object.entries(obj),它保证与 Object.keys 相同的遍历顺序(ES2015+ 规范定义)。
  • 需包含不可枚举属性(如通过 Object.defineProperty 设置的):用 Object.getOwnPropertyNames(obj) 或结合 Object.getOwnPropertyDescriptors(obj) 获取完整描述。
  • 需处理 Symbol 属性:必须显式调用 Object.getOwnPropertySymbols(obj),再手动合并字符串键和 Symbol 键。
  • 避免踩坑for...in 会遍历原型链上的可枚举属性,务必配合 Object.hasOwn 过滤;JSON.stringify 会忽略不可枚举属性、Symbol 键、函数值,不能用于遍历判断。

三、实际开发中的建议

多数业务场景只需操作自身可枚举属性:

立即学习Java免费学习笔记(深入)”;

  • 数据格式化、表单序列化、深拷贝基础层 → 优先用 Object.keys()Object.entries()
  • 调试或工具函数需完整属性信息 → 组合使用 Object.getOwnPropertyNames() + Object.getOwnPropertySymbols()
  • 判断属性是否存在 → 永远用 Object.hasOwn(obj, key),不用 key in obj(查原型)或 obj.hasOwnProperty(可能被覆盖)。
  • 想让某个属性不被遍历到 → 定义时设 enumerable: false;想彻底禁止修改 → 用 Object.freeze()Object.seal()

四、一个安全遍历的封装示例

兼顾可读性与健壮性:

function safeEntries(obj) {
  if (obj == null || typeof obj !== 'object') return [];
  const keys = Object.keys(obj);
  const symbols = Object.getOwnPropertySymbols(obj);
  return [...keys, ...symbols].map(key => [key, obj[key]]);
}
// 使用:safeEntries({ a: 1, [Symbol('b')]: 2 }) → [['a', 1], [Symbol('b'), 2]]

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

334

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

266

2025.12.04

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号