I see this type of construct everywhere. It is very C-like. Consider: https://github.com/tjwebb/xtuple/blob/21664-cash-receipt/enyo-client/extensions/source/billing/client/models/static.js#L40. Here I do everything that a C enum can do, but I can use the Maps to bi-directionally match values without any conditional statements, and in my case I'm mixing in `XM.FundsType` into `XM.CashReceipt` so now I can do things like:

```
var fundsType = cashReceipt.get('fundsType');
if (fundsType === XM.CashReceipt.CHECK) ...
if (cashReceipt.isCreditCard())
```

I also need human-readable strings, so instead of writing a bunch of `switch` blocks everywhere I need this, I will probably just override `XM.FundsType.toString()` like so:
```
toString: function () {
  // "key" is the key of the enum map e.g. CHECK, CASH, etc.
  return '_' + this.get('key').camelize()
}
```
or something. Not only is it less code to write on the front-end, it's perennially modular and re-usable everywhere.