对象字面量增强语法通过属性简写、方法简写和计算属性名三类特性,压缩变量名、方法名、动态键名的重复书写,降低微任务中载荷对象的声明体积与认知负担。
对象字面量增强语法的单行声明特性,本质是把变量名、方法名、动态键名这三类重复书写压缩为“所见即所得”的紧凑结构。它不增加运行时开销,却显著减少微任务(如 promise 回调、queuemicrotask、mutationobserver 处理器)中载荷对象的声明体积和认知负担。
用属性简写替代显式赋值
当微任务需要传递已存在的局部变量时,直接列出变量名即可,省去冒号与右侧重复引用。
- ✅ 推荐写法:queueMicrotask(() => { const id = 123; const type = 'update'; send({ id, type }); });
- ❌ 冗余写法:send({ id: id, type: type });
- 注意:变量必须已在作用域内声明,否则触发 ReferenceError;若值为 undefined,属性仍会保留且值为 undefined
用方法简写封装轻量行为
微任务中常需内联简单逻辑(如日志、状态标记),用方法简写可避免匿名函数包裹,保持语义清晰。
- ✅ 推荐写法:queueMicrotask(() => { const payload = { done() { console.log('done'); }, retry() { this.attempt = (this.attempt || 0) + 1; } }; payload.done(); });
- ⚠️ 注意:方法内 this 指向该对象本身,不是外层上下文;不可混用箭头函数(
done: () => {}不属于方法简写,且无法正确绑定 this)
用计算属性名动态生成字段
在按条件区分载荷结构的场景下(如不同环境、不同错误码分支),计算属性名让键名真正“随需而生”,避免 if-else 拼对象。
- ✅ 推荐写法:const code = 404; queueMicrotask(() => send({ [`error_${code}`]: true, timestamp: Date.now() })); → 得到
{ error_404: true, timestamp: 1747673654123 } - ⚠️ 注意:方括号内必须是表达式,不能是字符串字面量;若表达式求值为 null/undefined,键名会变成空字符串,建议加兜底处理,例如
[`status_${code || 'unknown'}`]
组合使用提升表达密度
真实微任务载荷往往同时含数据、行为与上下文标识,三种增强可自然并存,互不干扰。
- ✅ 示例:queueMicrotask(() => { const uid = 'u_abc'; const step = 'validate'; send({ uid, step, run() { return this.uid + '-' + this.step; }, [`at_${Date.now()}`]: 'start' }); });
- 关键点:没有冗余符号,每个字段来源一目了然;结构松散但语义紧密,利于快速扫描与维护










