首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在clojurescript中获取名称中带有破折号的属性?

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

Stack Overflow用户
提问于 2013-02-24 14:51:18
回答 1查看 757关注 0票数 6

我在一个javascript对象中有一个名为'user-agent‘的属性,我想要获取它的值。我如何在clojurescript中做到这一点?

代码语言:javascript
复制
(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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-24 16:09:22

使用aget

代码语言:javascript
复制
(aget js/a "user-agent")

点符号不起作用,因为clojurescript编译器为了支持扩展名而做了一些名称转换,以便在变量名中支持诸如?和!这样的字符。其中,名称munging还将短划线更改为下划线,以便将字段访问(如(.-user-agent js/a) )编译为类似a.user_agent的内容。

只要你停留在clojurescript中,名字转换就是透明的,你通常不需要知道它,除非你在做javascript互操作。在这种情况下,您可以使用interpo特性,如aget和aset。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15049413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档