对象方法简写是ES6语法糖,用于对象字面量中省略function关键字和冒号,提升可读性与一致性;仅适用于对象属性,不适用于类方法,需配合ESLint规则统一落地。

对象方法简写是ES6提供的语法糖,它让对象中函数属性的定义更紧凑、语义更清晰。在组件库开发中,合理使用方法简写能显著减少视觉噪音,强化逻辑归属,同时配合团队规范(如 ESLint object-shorthand 规则),可统一风格、降低维护成本。
优先用方法缩写替代 function 声明
当对象内定义的是普通成员函数(非箭头函数、不依赖动态 this、不需 arguments 或 super)时,直接省略 function 关键字和冒号。
- ✅ 推荐写法:
const Button = { render() { return '<button>' + this.text + '</button>'; }, handleClick() { this.emit('click'); } }; - ❌ 冗余写法:
handleClick: function() { ... }—— 在现代环境中显得过时且占行
与属性简写组合使用,保持结构一致
组件配置对象、默认 props、事件处理器集合等场景,常同时包含状态字段和行为方法。统一使用简写可提升整体节奏感。
- ✅ 清晰示例:
const defaultProps = { size: 'md', disabled: false, onClick() { console.log('clicked'); } }; - ⚠️ 注意:若某方法需绑定固定 this(如作为事件回调传入 DOM),应显式用箭头函数或 bind,此时不宜简写
避免在类方法或生命周期钩子中误用
方法简写只适用于对象字面量内部。在 Vue 的 class component 或 React 的 class 组件中,render、mounted、componentDidMount 等属于类成员,不是对象属性,不能套用该语法。
- ✅ 正确(对象字面量):
export default { name: 'MyButton', methods: { handleClick() { ... } } };—— 这里 methods 是对象,其值可简写 - ❌ 错误(类语法):
class MyButton extends Vue { handleClick() { ... } }—— 这是类方法声明,不涉及对象简写规则
配合 ESLint 自动校验,确保团队落地
启用 eslint-plugin-es5 或 @typescript-eslint/eslint-plugin 中的 object-shorthand 规则(推荐配置为 "always"),工具会自动提示未简写的函数属性,避免人工遗漏。
- 例如:检测到
init: function() {}会警告“Expected method shorthand” - 搭配 Prettier 可进一步实现保存即格式化,减少代码评审中关于风格的讨论

















