我可以将属性分解为对象文字的相同属性吗?

时间:2019-12-29 23:56:30

标签: javascript

这是在Node.js REPL:

> action = {type: 'build', index: 42 }
{ type: 'build', index: 42 }
> { name: 99, {index : action} }
{ index: { type: 'build', index: 42 } }

name: 99去哪里了?

我希望:{ name: 99, index: 42 }。显然我的尝试是错误的。

不破坏结构的一种方法是:

{ name: 99, index: action.index }

但是,如何使用某种销毁方法……或更具体地说,采用经济的语法,而又不必两次提及{ name: 99, index: 42 },如何得到index的期望?

1 个答案:

答案 0 :(得分:2)

否,这是不可能的。解构语法的评估结果为要解构的值,因此({ a } = b)的评估结果为b。因此,无法在对象文字内部使用解构。同样,没有其他方法可以做到这一点。

一个language proposal,它将允许语法为

 { action.index }

似乎离标准化还很遥远。


作为旁注:您的尝试没有用,因为它实际上只建立了一个对象。外部{}被解释为一个块语句,name:被解释为一个标签,后面的,被解释为逗号运算符,因此后面的{}在表达式上下文中并且是解释为对象文字:

{ // block
  name: // label
  (99, {index : action}) // comma operator
}
相关问题