object.keys、object.values、object.entries均只返回对象自身可枚举字符串键的键名、值、键值对数组,顺序一致且不包含symbol键和原型属性。

Object.keys、Object.values 和 Object.entries 是 JavaScript 中用于遍历对象属性的三个静态方法,它们都只处理对象自身的**可枚举字符串键属性**(不包括 Symbol 键,也不包括原型链上的属性)。
Object.keys:获取所有可枚举的字符串键名
返回一个由对象自身可枚举属性的键名组成的字符串数组,顺序与 for...in 循环一致(即按属性定义顺序,对数字键会自动排序)。
例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
console.log(Object.keys(obj)); // ['2', '10', 'b', 'a']
注意:数字键会被当作字符串处理,并在结果中按数值大小提前排列(仅限纯数字字符串键)。
Object.values:获取所有可枚举的字符串键对应值
返回一个由对象自身可枚举属性的值组成的数组,顺序与 Object.keys 严格对应。
例如:
const obj = { x: 'hello', y: 42, z: true };console.log(Object.values(obj)); // ['hello', 42, true]
值的类型保持原样,不会转为字符串;若属性是 getter 且未调用,则返回其返回值(执行 getter)。
Object.entries:获取键值对数组
返回一个二维数组,每个子数组形如 [key, value],顺序同样与 Object.keys 一致。
例如:
const user = { name: 'Alice', age: 30 };console.log(Object.entries(user));
// [['name', 'Alice'], ['age', 30]]
这个结果可以直接用于 Map 构造或解构循环:
console.log(`${key}: ${value}`);
}
它们都不处理 Symbol 属性和原型属性
如果对象有 Symbol 键或继承了属性,这三个方法都忽略:
-
Object.getOwnPropertySymbols()专门获取 Symbol 键 -
Reflect.ownKeys()获取所有自身键(含字符串 + Symbol) - 要包含原型链上的可枚举属性,需手动遍历
for...in并配合hasOwnProperty
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










