使用关联数组作为变量名?-javascript

使用关联数组作为变量名?-javascript,javascript,firefox,firefox-addon,associative-array,Javascript,Firefox,Firefox Addon,Associative Array,我浏览了一些firefox扩展的代码(这里:),看到了一些我以前在javascript中从未见过的东西。程序员使用了关联数组作为变量名。有人能给我解释一下这个变量引用是如何工作的吗 const {classes: Cc, interfaces: Ci, utils: Cu} = Components; 我通过阅读本页了解“const”: 但它如何能够使用关联数组对象作为变量名呢 此外,它似乎使用关联数组中的键名作为对组件方法的引用(此处列出:)。我一直认为键名必须先出现,然后才是值,但这似乎将

我浏览了一些firefox扩展的代码(这里:),看到了一些我以前在javascript中从未见过的东西。程序员使用了关联数组作为变量名。有人能给我解释一下这个变量引用是如何工作的吗

const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
我通过阅读本页了解“const”:

但它如何能够使用关联数组对象作为变量名呢


此外,它似乎使用关联数组中的键名作为对组件方法的引用(此处列出:)。我一直认为键名必须先出现,然后才是值,但这似乎将引用的值放在Components classes方法的前面,然后将其分配给Cc名称,即使Cc位于值出现的位置(Ci代表Components interfaces方法,Cu代表Components utils方法)

分解结构分配使从数组中提取数据成为可能 或使用反映数组和 对象文本。 对象和数组文字表达式提供了一种创建临时数据包的简单方法。一旦您创建了这些 数据,您可以以任何方式使用它们。你甚至可以退货 来自函数

是的,看看这个:

var abc = {classes: "ABC", interfaces: "DEF", utils: "XYZ"};
const {classes: Cc, interfaces: Ci, utils: Cu} = abc;
console.debug("test: ", Cc, Ci, Cu);

看起来很有趣,特别是对于正在阅读代码的人:)

在JavaScript中,通常称为“关联数组”的术语只是“对象”(有时是“映射”或“字典”)。我们避免使用“关联数组”,因为这会让那些认为它与
数组
类型有关的信息不太灵通的人感到困惑。Big+1的可能重复。显然,ECMAScript6将具有某种类型的解构分配,尽管它可能(或可能)与Mozilla的不完全兼容。我在发布之前搜索过谷歌,但没有找到任何结果。这个例子似乎很好地解释了这一点:交换key:value似乎仍然很奇怪。最糟糕的是,它只与Firefox兼容。所以基本上你强迫你的读者学习(并分开)一种不同的语言。我试过了,它告诉我我的chrome也支持1.7和firefox-1.8,但这句话在chrome中不起作用。。。此外,IE9仅支持1.3:D