ES6方法简写语法省略function关键字和冒号,支持参数、默认值、剩余参数及计算属性名组合,但不适用于箭头函数、getter/setter、JSON或动态键名场景。

方法简写语法能让对象里的函数定义更干净,关键不是“能省几个字”,而是让意图更清晰、减少冗余干扰。它只适用于普通方法,不适用于需要特殊 this 绑定、arguments 或 super 的场景。
什么时候该用方法简写
当函数作为对象的普通行为存在,且不需要箭头函数的词法 this,也不依赖 arguments 对象时,就适合用方法简写。
- ✅ 正确:对象初始化时定义工具方法,比如
reset()、validate()、toJson() - ✅ 正确:类的实例方法在对象字面量中临时组装(非 class 声明体内部)
- ❌ 避免:事件回调如
onClick: function() { ... }—— 若需保持this指向组件实例,应显式绑定或用箭头函数 - ❌ 避免:含
yield的生成器方法,必须写成gen() { yield ... }形式,不能省略function*关键字
怎么写才规范
方法简写就是去掉 function 关键字和冒号,保留括号与函数体。名称后直接跟 () { ... },不加 =>。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- ✅ 推荐:
save() { localStorage.setItem('data', this.data); } - ✅ 支持默认参数:
fetch(url, options = {}) { return fetch(url, options); } - ✅ 支持解构参数:
update({ id, name }) { this.id = id; this.name = name; } - ❌ 错误:
run: () => { ... }—— 这是带箭头函数的属性赋值,不是方法简写 - ❌ 错误:
init: function() { ... }—— 在支持 ES6 的项目中属于冗余写法
和属性简写组合使用更高效
属性简写 + 方法简写常一起出现,尤其在构造配置对象或返回结果对象时,能大幅减少重复。
立即学习“Java免费学习笔记(深入)”;
- ✅ 清晰示例:
const { x, y } = position;<br>const point = { x, y, distance() { return Math.sqrt(x*x + y*y); } }; - ⚠️ 注意一致性:不要一半简写一半冗长,比如
{ x, y, toString: function() { ... } }会降低可读性 - ? 工具建议:启用 ESLint 的
object-shorthand规则(设为"always"),自动提醒未简写的情况
哪些地方不能用
方法简写是语法糖,不是万能胶。它不改变函数本质,也不解决作用域或执行上下文问题。
- ❌ JSON 字符串中完全无效 —— JSON 不支持任何简写,仅限 JS 运行时对象
- ❌ 动态键名不适用:
{ [key]: function() {} }必须显式写function,无法缩写为[key]() {} - ❌ 异步方法仍可简写:
async load() { ... }合法,但async是修饰符,不是简写的一部分 - ❌ 构造函数不能简写:
constructor() { ... }是 class 专用语法,不在对象字面量方法简写范畴内

















