Глядя на источник JavaScriptCompressor:
строки 548 -
if (!disableOptimizations) {
optimizeObjectMemberAccess(this.tokens);
optimizeObjLitMemberDecl(this.tokens);
}
строки 467 -
/*
* Transforms obj["foo"] into obj.foo whenever possible, saving 3 bytes.
*/
private static void optimizeObjectMemberAccess(ArrayList tokens) {
строки 497 -
/*
* Transforms 'foo': ... into foo: ... whenever possible, saving 2 bytes.
*/
private static void optimizeObjLitMemberDecl(ArrayList tokens) {
Таким образом, он преобразует использование константных строк в foo['bar']
в foo.bar
и {'bar':x}
в {bar:x}
.