Leia a propriedade do objeto aninhado (t (‘abc’)) via string em JS

Imagine este objeto (‘hash’)

accessing =
an
:
deeply
:
nested
:
attribute
:
yeah
: 'yeah yeah'

console
.log accessing.an.deeply.nested.attribute.yeah
#output: yeah yeah

Como acessar isso com uma string dinâmica? Reduza (de underscore.js ou mesmo o nativo em Javascript 1.8 virá para resgatar!

#use reduce to follow the key chain
window
.t = (key, obj)->
_
(key.split('.')).reduce( ((obj, key)-> obj[key]), obj)

#pass the chained key to access and the object
console
.log t('an.deeply.nested.attribute.yeah', accessing)
#output: yeah yeah

Eu uso isso para acessar minhas traduções em Rails em JS. Preste atenção ao tratamento de erros (por exemplo, chave não encontrada)