如何实现ES6+中的反向解构?批量将变量赋值给对象属性
批量将变量赋值给对象属性的优雅方法
你说的这种「反向解构」操作,ES6+里有两种非常简洁的实现方式,完全不用逐个手动赋值:
1. 使用对象展开运算符(ES2018+)
如果允许创建新对象替代原对象,用展开语法最直观:
const name = 'John' const age = 30 const eyeColor = 'brown' // 生成新对象,保留原对象其他属性,覆盖指定属性 myObject = { ...myObject, name, age, eyeColor }
这里的name等价于name: name,当变量名和属性名一致时可省略键名。
2. 使用Object.assign(ES6+)
如果需要直接修改原对象属性(不创建新对象),用Object.assign更合适:
const name = 'John' const age = 30 const eyeColor = 'brown' // 直接把属性合并到原对象,覆盖同名属性 Object.assign(myObject, { name, age, eyeColor })
额外说明
如果变量名和目标属性名不一致,显式指定键名即可:
const newName = 'John' Object.assign(myObject, { name: newName })
不管是18个还是更多变量,只要把它们按变量名(或属性名: 变量名)的格式放进大括号里,就能一次性完成批量赋值,完全不用重复写myObject.xxx = xxx。
内容的提问来源于stack exchange,提问作者anthony galligani
相关产品推荐
相关产品推荐

