Object.values 是 JavaScript 中提取对象自身可枚举属性值的静态方法,返回按定义顺序排列的值数组,仅处理字符串键、忽略原型链和 Symbol 键,空值需防护,常用于配置提取与数组操作。

Object.values 是 JavaScript 中用于提取对象所有可枚举自身属性值的静态方法,返回一个由这些值组成的数组,顺序与 for...in 循环一致(即按属性定义顺序,不保证严格按插入顺序,但现代引擎通常如此)。
基本用法:获取对象自身的可枚举属性值
它只遍历对象**自身、可枚举(enumerable: true)的属性**,忽略原型链上的属性和不可枚举属性(如 Object.prototype.toString 或通过 Object.defineProperty 设置为 enumerable: false 的属性)。
- 语法:
Object.values(obj) - 参数
obj必须是对象(原始值会先被包装成对象,如字符串转为String实例) - 返回值:数组,元素是属性值,不包含键名
常见使用场景与注意事项
适用于快速提取配置项、表单数据、状态快照等结构化值集合。
- 对空对象或 null/undefined 调用会报错,建议先做类型判断:
Object.values(obj ?? {}) || [] - 数值索引属性(如类数组对象)也会被纳入,例如:
Object.values({0: 'a', 1: 'b', length: 2})返回['a', 'b', 2] - Symbol 类型键名的属性**不会被包含**,即使它是可枚举的 ——
Object.values只处理字符串键
对比 Object.keys 和 Object.entries
三者都遵循相同遍历规则(自身 + 可枚举),区别在于返回内容:
立即学习“Java免费学习笔记(深入)”;
-
Object.keys(obj)→ 字符串键名数组 -
Object.values(obj)→ 对应值数组 -
Object.entries(obj)→ 键值对二维数组,如[['key1', val1], ['key2', val2]]
它们可以组合使用,比如用 Object.values 提取后直接进行 map、filter 等数组操作。
实际小例子
假设有一个用户配置对象:
const user = { name: 'Alice', age: 30, active: true };执行:
console.log(Object.values(user)); // ['Alice', 30, true]如果想过滤出字符串类型的值,可以链式调用:
Object.values(user).filter(val => typeof val === 'string');


















