5

我正在查看来自 firefox 扩展的一些代码(此处:https ://github.com/mozilla/prospector/blob/master/oneLiner/bootstrap.js#L34 ),我看到了一些我以前在 javascript 中从未见过的东西。程序员使用关联数组作为变量名。有人可以向我解释这个变量引用是如何工作的吗?

const {classes: Cc, interfaces: Ci, utils: Cu} = Components;

我通过阅读此页面了解“const”:https ://developer.mozilla.org/en/JavaScript/Reference/Statements/const

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

此外,它似乎使用关联数组中的键名作为对组件方法的引用(在此处列出:https ://developer.mozilla.org/en/Components_object )。我一直认为必须先有键名,然后才是值,但这似乎是将引用的值放在 Components 类方法中,然后将其分配给 Cc 的名称,即使 Cc 位于值的位置会去(和组件接口方法的 Ci 和组件工具方法的 Cu)。

4

2 回答 2

6

您所看到的是解构分配,它自 javascript 1.7 起可用,请参阅此文档以获取更多信息https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7

解构赋值使得使用反映数组和对象字面量构造的语法从数组或对象中提取数据成为可能。对象和数组文字表达式提供了一种创建临时数据包的简单方法。一旦你创建了这些数据包,你就可以以任何你想要的方式使用它们。您甚至可以从函数中返回它们。

于 2012-04-27T12:05:58.837 回答
0

是的,看看这个:

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

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

于 2012-04-27T12:11:13.890 回答