Yeah, I will generally pick one of the two patterns, depending on if the state can be mapped in a 1:1 relationship (or if it's in a really performance critical path). So for instance, if we have a bunch of language keys that map exactly to a specific state, I'll do something like (psuedo-code):
```
instance._languageKeys = {
'stopped': Liferay.Language.get('call-stopped'),
'started': Liferay.Language.get('call-started'),
};

onResponse: function(state){
    var msg = instance._languageKeys[state];
}
```
However, if there ends up being a lot of keys with duplicate values, it ends up looking a bit convoluted if I try to torture the code into following that pattern (which I will do if it's performance critical since a property look up will be extremely cheap), but at that point, the code overhead may be worth it.

Most of the time in that case though, I will just prefer if/elses, and try to limit the duplicate work as much as possible.