如何在clojurescript中获取名称中带有破折号的属性?

如何在clojurescript中获取名称中带有破折号的属性?,clojure,clojurescript,Clojure,Clojurescript,我在一个javascript对象中有一个名为“user agent”的属性,我想获取它的值。在clojurescript中我该怎么做 (js/eval "a = {'user-agent': 'curl/7.22.0'}") (js/eval "a['user-agent']") ;=> curl/7.22.0 (.-user-agent js/a) ;=> (returns nothing) (. js/a -user-agent) ;=> (returns nothing)

我在一个javascript对象中有一个名为“user agent”的属性,我想获取它的值。在clojurescript中我该怎么做

(js/eval "a = {'user-agent': 'curl/7.22.0'}")
(js/eval "a['user-agent']") ;=> curl/7.22.0
(.-user-agent js/a) ;=> (returns nothing)
(. js/a -user-agent) ;=> (returns nothing)
这是因为在这里使用点符号而不是括号符号检索属性吗

使用
aget

(aget js/a "user-agent")
点表示法不起作用,因为clojurescript编译器进行了一些名称转换,以支持扩展字符,如
在变量名中。除其他外,名称mung还将破折号更改为下划线,以便将诸如
(.-user-agent js/a)
之类的字段访问编译为类似
a.user\u-agent
的内容

只要您停留在clojurescript中,名称Mung是透明的,您通常不需要知道它,除非您正在进行javascript互操作。在这种情况下,您可以使用interpo功能,如
aget
aset