オブジェクトのキーに配列を使う
var a = {};
a[['key']] = 1;
a[['key']]; //1が取れる
オブジェクトリテラル中でキーに配列を使うと構文エラー
var a = {['key'], 1};
種明かし
配列が文字列化されてキーになっています。
['key']
を文字列化すると "key" になります。
String(['key']) // "key"が返る
実際はkeyプロパティが設定されています。
var a = {};
a[['key']] = 1;
a.key; //1が取れる
仕様確認
Working with Objects - JavaScript | MDN に
オブジェクトプロパティの名前には、正しい JavaScript 文字列か、空文字列を含む、文字列に変換できるあらゆるものを使えます。