JavaScript中遍历对象属性有标准方法:Object.keys()获取可枚举自有字符串键;Object.values()获取对应值;Object.entries()获取[key,value]数组;需含不可枚举或Symbol键时,用Object.getOwnPropertyNames()与Object.getOwnPropertySymbols()组合。

JavaScript 中遍历和提取对象的键、值或键值对,有多种标准方法,选哪种取决于你的具体需求:只要键名?只要值?还是需要同时处理键和值?下面分情况说明。
获取所有键名(keys)
用 Object.keys() 最直接,返回一个包含所有可枚举自有属性键名的数组:
- 只遍历对象自身的、可枚举的属性(不包括原型链上的)
- 返回的是字符串数组,即使原始键是 Symbol,也不会被包含(Symbol 键需单独处理)
- 示例:const keys = Object.keys({a: 1, b: 2}); // ['a', 'b']
获取所有值(values)
用 Object.values(),逻辑与 keys 类似,但返回的是对应键的值组成的数组:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 顺序与 Object.keys() 一致(按插入顺序,ES2015+ 规范保证)
- 遇到 undefined、null、NaN 等值也会如实返回
- 示例:const vals = Object.values({x: 'hello', y: 42}); // ['hello', 42]
获取所有键值对(entries)
用 Object.entries(),返回一个二维数组,每个子项是 [key, value] 形式:
立即学习“Java免费学习笔记(深入)”;
- 适合需要同时操作键和值的场景,比如转成 Map 或过滤重组
- 可配合 for...of 或数组方法(如 map、filter)使用
- 示例:const entries = Object.entries({p: 1, q: 2}); // [['p', 1], ['q', 2]]
再比如:for (const [k, v] of Object.entries(obj)) { console.log(k, v); }
遍历所有属性(含不可枚举和 Symbol)
如果需要更全面的遍历(比如调试、深拷贝、序列化),可以组合使用:
- Object.getOwnPropertyNames(obj):获取所有自有属性名(包括不可枚举的,但不含 Symbol)
- Object.getOwnPropertySymbols(obj):获取所有自有 Symbol 属性
- 合并两者即可覆盖全部自有属性:[...Object.getOwnPropertyNames(obj), ...Object.getOwnPropertySymbols(obj)]
- 注意:原型链上的属性需手动递归获取(如用 Object.getPrototypeOf())

















