Object.values 是 ES6 引入的静态方法,用于提取对象自身可枚举属性的值并返回数组,顺序与 for...in 一致,仅处理自有可枚举属性,忽略原型链、不可枚举属性及 Symbol 键(但支持 Symbol 类型键的值),非对象参数会抛错或被包装。

Object.values 是 ES6 引入的静态方法,用于**提取对象自身可枚举属性的值**,返回一个数组,顺序与 for...in 遍历一致(即按属性定义顺序,不包括原型链上的属性)。
基本用法:直接传入普通对象
它只处理对象自身的、可枚举的自有属性,忽略不可枚举属性(如 Object.defineProperty 设置的 enumerable: false)和继承属性。
- 示例:
console.log(Object.values(obj)); // [1, 'hello', true]
注意键名类型:字符串键和 Symbol 键都支持
ES6 允许对象使用 Symbol 作为属性名,Object.values 会包含 Symbol 类型的可枚举属性值,但不会把 Symbol 本身转成字符串——它只取值。
- 示例:
const obj = { x: 10, [sym]: 'symbol-val' };
console.log(Object.values(obj)); // [10, 'symbol-val']
不处理原型链,也不处理非对象输入
如果传入 null 或 undefined,会抛出 TypeError;如果是原始值(如字符串、数字),会尝试包装成对象再取值(但一般不推荐这样用)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
- 常见错误:
Object.values(undefined); // TypeError
Object.values('abc'); // ['a', 'b', 'c'] ← 字符串被转为 String 对象,取其索引属性值
和 Object.keys / Object.entries 的关系
三者是配套方法,分别获取键、值、键值对数组:
-
Object.keys(obj)→['a', 'b', 'c'] -
Object.values(obj)→[1, 'hello', true] -
Object.entries(obj)→[['a', 1], ['b', 'hello'], ['c', true]]
它们都遵循相同规则:仅自身、可枚举、按定义顺序。

















