这是在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
的期望?
答案 0 :(得分:2)
否,这是不可能的。解构语法的评估结果为要解构的值,因此({ a } = b)
的评估结果为b
。因此,无法在对象文字内部使用解构。同样,没有其他方法可以做到这一点。
一个language proposal,它将允许语法为
{ action.index }
似乎离标准化还很遥远。
作为旁注:您的尝试没有用,因为它实际上只建立了一个对象。外部{}
被解释为一个块语句,name:
被解释为一个标签,后面的,
被解释为逗号运算符,因此后面的{}
在表达式上下文中并且是解释为对象文字:
{ // block
name: // label
(99, {index : action}) // comma operator
}