ES6对象字面量增强包括属性名简写、方法简写和计算属性名。属性名简写允许同名变量直接作为属性;方法简写省略function关键字;计算属性名用方括号动态生成键名;三者常与解构赋值协同用于数据处理。

ES6(ECMAScript 2015)引入了对象字面量的多项增强语法,让对象的定义更简洁、表达力更强。这些特性不是“炫技”,而是切实减少冗余、提升可读性和开发效率。
属性名简写(Shorthand Property Names)
当变量名与属性名相同时,可省略冒号和重复的名称。
说明:适用于函数参数解构后直接构造对象、或已有同名变量需作为属性值的情况。
- ES5 写法:const obj = { name: name, age: age };
- ES6 简写:const obj = { name, age };(前提是作用域中存在同名变量)
- 支持常量、let/const 声明的变量,也支持解构后的参数:const { id, title } = data; return { id, title };
方法简写(Shorthand Method Definitions)
对象内定义函数时,可省略 function 关键字和冒号。
立即学习“Java免费学习笔记(深入)”;
说明:只适用于普通函数,不适用于箭头函数;this 行为与传统方法一致(非词法绑定)。
- ES5 写法:const obj = { run: function() { console.log('go'); } };
- ES6 简写:const obj = { run() { console.log('go'); } };
- 也支持带参数、默认值、剩余参数:getData(id, timeout = 5000) { ... }
计算属性名(Computed Property Names)
用方括号 [] 包裹表达式,动态生成属性名。
说明:支持任意表达式,包括变量、模板字符串、调用函数等,解决了 ES5 中必须先创建对象再赋值的繁琐流程。
- 基础用法:const key = 'user_name'; const obj = { [key]: 'Alice' };
- 结合模板字符串:const prefix = 'data'; const obj = { [`${prefix}Id`]: 123 };
- 可用于 Symbol 作为键:const sym = Symbol('desc'); const obj = { [sym]: 'a symbol key' };
解构赋值与字面量增强协同使用
对象字面量增强语法常与解构配合,实现“提取→重组”的流畅数据处理。
说明:这是实际项目中最常见的组合场景,尤其在 API 响应处理、状态更新、配置合并中高频出现。
- 例如从响应中提取并重命名字段:const { name: fullName, email: contact } = user; return { fullName, contact, createdAt: Date.now() };
- 也可嵌套使用:const { profile: { avatar, bio } } = data; return { avatar, bio, status: 'active' };









