ES6在结构中的计算属性 - 构造整个对象

Noi*_*art 3 javascript ecmascript-6

我有这个变量:

var a = {b:1, c:2, d:'rawr', rawr:10};
Run Code Online (Sandbox Code Playgroud)

我想将这些构建到本地范围,所以我这样做:

var {b, c, d} = a;
Run Code Online (Sandbox Code Playgroud)

这很好但我需要rawr离开.我试过这个:

var {b, c, d, [a.d]} = a;
Run Code Online (Sandbox Code Playgroud)

但这让我missing : after property id这么努力:

所以我接着做了两步:

var {b, c, d} = a;
var {[d]} = a;
Run Code Online (Sandbox Code Playgroud)

然而,这给了我SyntaxError: missing : after property id.无论如何在ES6中这样做?

预期结果是:

var b = 1;
var c = 2;
var d = 'rawr';
var rawr = 10;
Run Code Online (Sandbox Code Playgroud)

zer*_*kms 8

你可以像这样解构它:

var {b, c, d, [d]: q} = a;
Run Code Online (Sandbox Code Playgroud)

因此,具有名称的属性中的任何内容都被d分配给q.

UPD:

您在更新中询问的内容是不可能的.*


Ber*_*rgi 7

您需要为其分配一个变量。您不能使用“计算”​​变量名称1,因为这会违反标识符的静态范围解析规则。所以你应该做

var {b, c, d, [a.d]: rawr} = a;
Run Code Online (Sandbox Code Playgroud)

获取变量中a.d-named 属性的rawr值。

1:好吧,你可以在草率模式下使用evalwith语句来做到这一点,但正是因为这个,两者都被鄙视。