对象解构的相反操作是什么?

6
给定以下示例。是否有字段分配的速记法?
在这个问题中,我们是否可以使用更简洁的语法来为字段赋值呢?
let myObj = {someField: 'someValue'}
let foo = 'value'

myObj.foo = foo // I would like to do the opposite of object destructuring: const {foo} = myObj. I don't want to repeat foo twice.

2
你是指 const myObj = { foo: "value" } 吗? - Oliver Charlesworth
4
除非您这样声明 const foo = 'value'; const myObj = { foo };,否则我认为不可能。但由于您正在使用常量,因此它必须是您的最后一个声明。 - somethinghere
myObj = {..myObj, foo} - Lev
1
如果你已经有了名为myObjfoo的东西,你无法避免再次引用它们来表达“我想将myObjfoo关联”。 - Oliver Charlesworth
@Lev 注意,{...myObj, foo} 语法目前还不是标准 - str
显示剩余3条评论
2个回答

9
你可以使用 Object.assign 和一个简写属性

const myObj = {}
const foo = 'value'

Object.assign(myObj, { foo });

console.log(myObj);


2
如果你改变陈述的顺序,你可以做到这一点:
const foo = 'value';
const myObject = { foo };

或者如果你从const改为var,这样你就可以给myObj分配一个新的对象:

var myObj = {};
const foo = 'value';
myObj = { foo }

谢谢。我发布了myObj = { ...myObj,foo }; - Lev
@Lev 我认为现在仍然是这种情况。您是指 myObj 的原始值吗? - somethinghere
问题在于这种情况下我重复了myObj。使用解构,foo和myObj只被指定一次,这就是它变得优雅的原因。 - Lev
1
正如@OliverCharlesworth在您的帖子评论中所说:“如果您已经有了名为myObj和foo的东西,为了说'我想将myObj与foo关联起来',您无法避免再次引用它们”。 - somethinghere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接