我在一个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)这是因为在这里使用点表示法而不是括号表示法来检索属性吗?https://github.com/clojure/clojurescript/blob/master/src/clj/cljs/compiler.clj#L734
发布于 2013-02-24 16:09:22
使用aget
(aget js/a "user-agent")点符号不起作用,因为clojurescript编译器为了支持扩展名而做了一些名称转换,以便在变量名中支持诸如?和!这样的字符。其中,名称munging还将短划线更改为下划线,以便将字段访问(如(.-user-agent js/a) )编译为类似a.user_agent的内容。
只要你停留在clojurescript中,名字转换就是透明的,你通常不需要知道它,除非你在做javascript互操作。在这种情况下,您可以使用interpo特性,如aget和aset。
https://stackoverflow.com/questions/15049413
复制相似问题