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

しかし、どのようにして連想配列オブジェクトを変数名として使用できるのでしょうか。

また、Componentsメソッドへの参照として連想配列のキー名を使用しているようです(ここにリストされています:https ://developer.mozilla.org/en/Components_object )。私はいつもキー名を最初に、次に値を指定する必要があると思っていましたが、これは、Ccが値のある場所にある場合でも、Componentsクラスメソッドへの参照の値を最初に配置してからCcの名前に割り当てるようです。 (そして、Componentsinterfacesメソッドの場合はCi、Components utilsメソッドの場合はCu)。

4

2 に答える 2

6

表示されているのはDestructuring割り当てです。これは、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 に答える